Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions lib/src/client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,10 @@ class Client {
}

/// Read a single files properties
Future<File> readProps(String path, [CancelToken? cancelToken]) async {
path = fixSlashes(path);
Future<File> readProps(String path,{ bool isFile = false, CancelToken? cancelToken}) async {
//如果是文件,不要添加尾 '/', 因为一些服务器可能不支持文件带 尾 '/' 的props请求,例如群晖
//If it is a file, do not add a trailing '/', because some servers (such as Synology) may not support PROPFIND requests for files with a trailing '/'.
path = isFile ? fixSlashStart(path) : fixSlashes(path);
var resp = await this
.c
.wdPropfind(this, path, true, fileXmlStr, cancelToken: cancelToken);
Expand Down
10 changes: 8 additions & 2 deletions lib/src/utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,17 @@ String fixSlash(String s) {
return s;
}

// 添加 '/' 前后缀
String fixSlashes(String s) {
//添加 '/' 前缀
String fixSlashStart(String s){
if (!s.startsWith('/')) {
s = '/${s}';
}
return s;
}

// 添加 '/' 前后缀
String fixSlashes(String s) {
s = fixSlashStart(s);
return fixSlash(s);
}

Expand Down
11 changes: 8 additions & 3 deletions lib/src/webdav_dio.dart
Original file line number Diff line number Diff line change
Expand Up @@ -469,8 +469,10 @@ class WdDio with DioMixin implements Dio {
'PUT',
path,
data: Stream.fromIterable(data.map((e) => [e])),
optionsHandler: (options) =>
options.headers?['content-length'] = data.length,
optionsHandler: (options) {
options.headers?['content-length'] = data.length;
options.headers?['content-type'] = "application/octet-stream";
},
onSendProgress: onProgress,
cancelToken: cancelToken,
);
Expand Down Expand Up @@ -504,7 +506,10 @@ class WdDio with DioMixin implements Dio {
'PUT',
path,
data: data,
optionsHandler: (options) => options.headers?['content-length'] = length,
optionsHandler: (options) {
options.headers?['content-length'] = length;
options.headers?['content-type'] = "application/octet-stream";
},
onSendProgress: onProgress,
cancelToken: cancelToken,
);
Expand Down