Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

flymzero/webdav_client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

63 Commits

Repository files navigation

webdav_client

A dart WebDAV client library(support null-safety), use dio as http client.

pub.dev link

Main features

  • support Basic/Digest authentication
  • common settings
  • read dir
  • make dir
  • delete
  • rename
  • copy
  • download file
  • upload file
  • cancel request

web support

see stackoverflow for CORSB problems needing attention

Usage

First of all you should create client instance using newClient() function:

var client = newClient(
'http://localhost:6688/',
user: 'flyzero',
password: '123456',
debug: true,
);

Common settings

// Set the public request headers
client.setHeaders({'accept-charset': 'utf-8'});

// Set the connection server timeout time in milliseconds.
client.setConnectTimeout(8000);

// Set send data timeout time in milliseconds.
client.setSendTimeout(8000);

// Set transfer data time in milliseconds.
client.setReceiveTimeout(8000);

// Test whether the service can connect
try {
await client.ping();
} catch (e) {
print('$e');
}

Read all files in a folder

var list = await client.readDir('/');
list.forEach((f) {
print('${f.name} ${f.path}');
});

// can sub folder
var list2 = await client.readDir('/sub/sub/folder');
list2.forEach((f) {
print('${f.name} ${f.path}');
});

Create folder

await client.mkdir('/Xin Jian Wen Jian Jia ');

// Recursively create folders
await client.mkdirAll('/new folder/new folder2');

Remove a folder or file

If you remove the folder, some webdav services require a '/' at the end of the path.

// Delete folder
await client.remove('/new folder/new folder2/');

// Delete file
await client.remove('/new folder/Xin Jian Wen Ben Wen Dang .txt');

Rename a folder or file

If you rename the folder, some webdav services require a '/' at the end of the path.

// Rename folder
await client.rename('/Xin Jian Wen Jian Jia /', '/Xin Jian Wen Jian Jia 2/', true);

// Rename file
await client.rename('/Xin Jian Wen Jian Jia 2/test.dart', '/Xin Jian Wen Jian Jia 2/test2.dart', true);

Copy a file / folder from A to B

If copied the folder (A > B), it will copy all the contents of folder A to folder B.

Some webdav services have been tested and found to delete the original contents of the B folder!!!

// Copy all the contents of folderA to folder B
await client.copy('/folder/folderA/', '/folder/folderB/', true);

// Copy file
await client.copy('/folder/aa.png', '/folder/bb.png', true);

Download file

// download bytes
await client.read('/folder/folder/openvpn.exe', onProgress: (c, t) {
print(c / t);
});

// download 2 local file with stream
await client.read2File(
'/folder/vpn.exe', 'C:/Users/xxx/vpn2.exe', onProgress: (c, t) {
print(c / t);
});

Upload file

// upload local file 2 remote file with stream
CancelToken c = CancelToken();
await client.writeFromFile(
'C:/Users/xxx/vpn.exe', '/f/vpn2.exe', onProgress: (c, t) {
print(c / t);
}, cancelToken: c);

Cancel request

CancelToken cancel = CancelToken();

// Supports most methods
client.mkdir('/Xin Jian Wen Jian Jia ', cancel)
.catchError((err) {
prints(err.toString());
});

// in other
cancel.cancel('reason')

About

A dart WebDAV client library

Topics

Resources

Readme

License

BSD-3-Clause license

Stars

Watchers

Forks

Packages

Contributors

Languages