Managing Items Hierarchy with JavaScript WebDAV Library
This article describes how to list folder contents, create, copy, move and delete files and folders. This operations are supported by any Class 1 compliant WebDAV server.
Getting a List of Child Items
<html>
<head>
<title>IT Hit WebDAV Client API for AJAX</title>
<script type="text/javascript" src="ITHitWebDAVClient.js" ></script>
<script type="text/javascript">
function run()
{
var session = new ITHit.WebDAV.Client.WebDavSession();
var folder;
try
{
folder = session.OpenFolder("http://server:8080/folder");
}
catch(e)
{
if(e instanceof ITHit.WebDAV.Client.Exceptions.NotFoundException)
alert("Folder not found.");
else
throw e;
}
if(folder!=null)
{
var items = folder.GetChildren(false);
for(var i=0; i<items.length; i++)
{
document.getElementById("container").innerHTML += items[i].DisplayName + "<br/>";
}
}
}
</script>
</head>
<body onload="run()">
<div id="container"></div>
</body>
</html>
If boolean parameter passed to WebDavSession.GetChildren is set to false only children of this folder are requested. Otherwise the entire subtree is requested.
Creating a Folder
var session = new ITHit.WebDAV.Client.WebDavSession();
var folder = session.OpenFolder("http://server:8765/");
var newFolder;
try
{
newFolder = folder.CreateFolder("My Folder");
}
catch(e)
{
if(e instanceof ITHit.WebDAV.Client.Exceptions.MethodNotAllowedException)
alert("Folder already exists.");
else
throw e;
}
if(newFolder!=null)
document.getElementById("container").innerHTML = newFolder.CreationDate;
Creating a File and Uploading Content
var session = new ITHit.WebDAV.Client.WebDavSession();
var folder = session.OpenFolder("http://server/sales/");
var resource = folder.CreateResource("file.txt");
resource.WriteContent('File content.');
See also Uploading Files.
Reading File Content
var session = new ITHit.WebDAV.Client.WebDavSession();
var resource = session.OpenResource("http://server/sales/file.txt");
var content = resource.ReadContent();
To download only a part of a file you can specify 2 parameters in ReadContent call. First parameter is the starting byte (zero-based) at witch to start content download, the second – amount of bytes to be downloaded:
var content = resource.ReadContent(5, 200);
The library will add Range header to the request in this case.
Checking if Child Item Exists
var oNS = ITHit.WebDAV.Client;
var session = new oNS.WebDavSession();
var folder = session.OpenFolder("http://server/testfldr/");
var isItemExists = folder.ItemExists("image00.gif");
if(isItemExists)
alert("Item exists");
else
alert("Item not found");
Copying Items
var oNS = ITHit.WebDAV.Client;
var session = new oNS.WebDavSession();
var srcFolder = session.OpenFolder("http://server/Sales/");
var dstFolder = session.OpenFolder("http://server/Products/");
try
{
srcFolder.CopyTo(dstFolder, "Test1", true, false);
}
catch (e)
{
if(e instanceof oNS.Exceptions.PreconditionFailedException)
{
document.getElementById("container").innerHTML +=
"The item with such name exists and 'overwrite' was 'false'.";
}
else if(e instanceof oNS.Exceptions.WebDavHttpException)
{
document.getElementById("container").innerHTML +=
e.Message + " " + e.Status.Code + " " +
e.Status.Description + "<br/>";
// Find which items failed to copy.
for(var i=0; i<e.Multistatus.Responses.length; i++)
{
var resp = e.Multistatus.Responses[i];
document.getElementById("container").innerHTML +=
resp.Href + " " + resp.Status.Code + " " +
resp.Status.Description + "<br/>";
}
}
else
throw e; // unexpected error
}
Moving Items
var oNS = ITHit.WebDAV.Client;
var session = new oNS.WebDavSession();
var srcFolder = session.OpenFolder("http://server/Sales/");
var dstFolder = session.OpenFolder("http://server/Products/");
try
{
srcFolder.MoveTo(dstFolder, srcFolder.DisplayName, false);
}
catch (e)
{
if(e instanceof oNS.Exceptions.PreconditionFailedException)
{
document.getElementById("container").innerHTML +=
"The item with such name exists and 'overwrite' was 'false'.";
}
else if(e instanceof oNS.Exceptions.WebDavHttpException)
{
document.getElementById("container").innerHTML +=
e.Message + " " + e.Status.Code + " " +
e.Status.Description + "<br/>";
// Find which items failed to move.
for(var i=0; i<e.Multistatus.Responses.length; i++)
{
var resp = e.Multistatus.Responses[i];
document.getElementById("container").innerHTML +=
resp.Href + " " + resp.Status.Code + " " +
resp.Status.Description + "<br/>";
}
}
else
throw e; // unexpected error
}
Deleting Items
var oNS = ITHit.WebDAV.Client;
var session = new oNS.WebDavSession();
var item = session.OpenFolder("http://server:8080/Sales/");
try
{
item.Delete();
}
catch (e)
{
if(e instanceof oNS.Exceptions.WebDavHttpException)
{
document.getElementById("container").innerHTML +=
e.Message + " " + e.Status.Code + " " +
e.Status.Description + "<br/>";
// Find which items failed to delete.
for(var i=0; i<e.Multistatus.Responses.length; i++)
{
var resp = e.Multistatus.Responses[i];
document.getElementById("container").innerHTML +=
resp.Href + " " + resp.Status.Code + " " +
resp.Status.Description + "<br/>";
}
}
else
throw e; // unexpected error
}
|