Flutter写了个webdav客户端插件,支持常用文件操作

发布于 1周前 作者 sinazl 来自 Flutter

webdav_client

##主要功能


Todo

  • Upload support for break uploads
  • Download support for breakdowns

Usage

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

var client = webdav.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('/新建文件夹');
// 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/新建文本文档.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('/新建文件夹 /', '/新建文件夹 2/', true);
// Rename file
await client.rename('/新建文件夹 2/test.dart', '/新建文件夹 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');
// download 2 local file
await client.read2File(
      '/folder/vpn.exe', 'C:/Users/xxx/vpn2.exe');

Upload file

    // upload local file 2 remote file
    await client.writeFromFile(
        'C:/Users/xxx/vpn.exe', '/f/vpn2.exe');

Cancel request

    CancelToken cancel = CancelToken();
// Supports most methods
client.mkdir('/新建文件夹', cancel)
.catchError((err) {
  prints(err.toString());
});

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


Flutter写了个webdav客户端插件,支持常用文件操作

更多关于Flutter写了个webdav客户端插件,支持常用文件操作的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter写了个webdav客户端插件,支持常用文件操作的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


很高兴看到你开发了一个基于Flutter的WebDAV客户端插件,并支持常用的文件操作。以下是一些专业意见和可能的改进方向:

首先,你的插件对于需要在多个平台上实现文件同步和共享的应用来说,是一个非常有价值的工具。WebDAV(Web-based Distributed Authoring and Versioning)是一种基于HTTP的协议,它允许用户编辑和管理远程服务器上的文件,因此你的插件能够跨平台工作,对于开发者来说是一个很大的便利。

在插件的功能上,建议你可以进一步扩展和优化。例如,除了基本的文件创建、读取、更新和删除操作外,还可以考虑增加对文件夹的操作(如创建、删除文件夹),以及对文件属性的修改(如修改文件权限、时间戳等)。这些功能将使你的插件更加完善和实用。

此外,在插件的性能和稳定性方面也需要关注。确保在各种网络环境下,插件都能稳定地工作,并且能够快速响应用户的操作。同时,也需要对插件进行充分的测试,以确保其没有严重的安全漏洞。

最后,建议你在文档和示例代码方面下功夫。提供清晰、详细的文档和示例代码,将有助于其他开发者更好地理解和使用你的插件。

总的来说,你的Flutter WebDAV客户端插件是一个非常有潜力的项目。希望你在未来的开发中,能够不断完善和优化插件的功能和性能,为更多的开发者提供便利。

回到顶部