webdav-for-chinese
WebDAV client for NodeJS
Last updated 3 years ago by willkan .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install webdav-for-chinese 
SYNC missed versions from official npm registry.

WebDAV client

A WebDAV client written in JavaScript for NodeJS.

Build Status

NPM

About

This client was branched from webdav-fs as the core functionality deserved its own repository. As webdav-fs' API was designed to resemble NodeJS' fs API, little could be done to improve the adapter interface for regular use.

This WebDAV client library is designed to provide an improved API for low-level WebDAV integration. This client uses window.fetch when available in the browser.

Usage

Usage is very simple (API) - the main exported object is a factory to create adapter instances:

var createClient = require("webdav");

var client = createClient(
    "https://webdav-server.org/remote.php/webdav",
    "username",
    "password"
);

client
    .getDirectoryContents("/")
    .then(function(contents) {
        console.log(JSON.stringify(contents, undefined, 4));
    })
    .catch(function(err) {
        console.error(err);
    });

Each method returns a Promise.

Adapter methods

These methods can be called on the object returned from the main factory.

createDirectory(remotePath [, options])

Create a new directory at the remote path.

deleteFile(remotePath [, options])

Delete a file or directory at remotePath.

getDirectoryContents(remotePath [, options])

Get an array of items within a directory. remotePath is a string that begins with a forward-slash and indicates the remote directory to get the contents of.

client
    .getDirectoryContents("/MyFolder")
    .then(function(contents) {
        console.log(JSON.stringify(contents, undefined, 2));
    })
    .catch(function(err) {
        console.error(err);
    });

The returned value is a Promise, which resolves with an array of item stat objects.

getFileContents(remotePath, format [, options])

Get the contents of the file at remotePath as a Buffer or String. format can either be "binary" or "text", where "binary" is default.

var fs = require("fs");

client
    .getFileContents("/folder/myImage.jpg")
    .then(function(imageData) {
        fs.writeFileSync("./myImage.jpg", imageData);
    })
    .catch(function(err) {
        console.error(err);
    });

Or with text:

client
    .getFileContents("/doc.txt", "text")
    .then(function(text) {
        console.log(text);
    })
    .catch(function(err) {
        console.error(err);
    });

moveFile(remotePath, targetPath [, options])

Move a file or directory from remotePath to targetPath.

// Move a directory
client
    .moveFile("/some-dir", "/storage/moved-dir")
    .catch(function(err) {
        console.error(err);
    });

// Rename a file
client
    .moveFile("/images/pic.jpg", "/images/profile.jpg")
    .catch(function(err) {
        console.error(err);
    });

putFileContents(remotePath, format, data [, options])

Put some data in a remote file at remotePath from a Buffer or String. data is a Buffer or a String. options has a property called format which can be "binary" (default) or "text".

var fs = require("fs");

var imageData = fs.readFileSync("someImage.jpg");

client
    .putFileContents("/folder/myImage.jpg", imageData, { format: "binary" })
    .catch(function(err) {
        console.error(err);
    });
client
    .putFileContents("/example.txt", "some text", { format: "text" })
    .catch(function(err) {
        console.error(err);
    });

options, which is optional, can be set to an object like the following:

{
    "format": "binary",
    "headers": {
        "Content-Type": "application/octet-stream"
    },
    "overwrite": true
}

options.overwrite (default: true), if set to false, will add an additional header which tells the server to abort writing if the target already exists.

stat(remotePath [, options])

Get the stat properties of a remote file or directory at remotePath. Resolved object is a item stat object.

Returned data structures

Item stat

Item stats are objects with properties that descibe a file or directory. They resemble the following:

{
    "filename": "/test",
    "basename": "test",
    "lastmod": "Tue, 05 Apr 2016 14:39:18 GMT",
    "size": 0,
    "type": "directory"
}

or:

{
    "filename": "/image.jpg",
    "basename": "image.jpg",
    "lastmod": "Sun, 13 Mar 2016 04:23:32 GMT",
    "size": 42497,
    "type": "file",
    "mime": "image/jpeg"
}

Properties:

Property name Type Present Description
filename String Always File path of the remote item
basename String Always Base filename of the remote item, no path
lastmod String Always Last modification date of the item
size Number Always File size - 0 for directories
type String Always Item type - "file" or "directory"
mime String Files only Mime type - for file items only

Current Tags

  • 0.5.0                                ...           latest (3 years ago)

1 Versions

  • 0.5.0                                ...           3 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (4)
Dev Dependencies (8)
Dependents (1)

Copyright 2014 - 2016 © taobao.org |