跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 写了个 webdav 客户端插件,支持常用文件操作
未分類
26 11 月 2020

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

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

資深大佬 : flyzero 0

webdav_client

  • https://pub.dev/packages/webdav_client
  • 使用 dio 作为 http 网络请求库,主要是方便后续的断点续传功能扩展

##主要功能

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

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') 

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具