fix webdav issue for root folder

This commit is contained in:
tickstep 2022-01-02 18:02:02 +08:00
parent 0c15220190
commit b9cbf78da4
3 changed files with 16 additions and 7 deletions

View File

@ -81,7 +81,9 @@ const FileUploadExpiredMinute = 1440 // 24小时
func formatPathStyle(pathStr string) string { func formatPathStyle(pathStr string) string {
pathStr = strings.ReplaceAll(pathStr, "\\", "/") pathStr = strings.ReplaceAll(pathStr, "\\", "/")
if pathStr != "/" {
pathStr = strings.TrimSuffix(pathStr, "/") pathStr = strings.TrimSuffix(pathStr, "/")
}
return pathStr return pathStr
} }

View File

@ -43,6 +43,11 @@ func (w *WebdavConfig) StartServer() {
if wdfi.fullPath != "/" && strings.Index(wdfi.fullPath, "/") != 0 { if wdfi.fullPath != "/" && strings.Index(wdfi.fullPath, "/") != 0 {
wdfi.fullPath = "/" + wdfi.fullPath wdfi.fullPath = "/" + wdfi.fullPath
} }
panClientProxy := &PanClientProxy{
PanUser: w.PanUser,
PanDriveId: w.PanDriveId,
PanTransferUrlType: w.TransferUrlType,
}
users[u.Username] = &User{ users[u.Username] = &User{
Username: u.Username, Username: u.Username,
Password: u.Password, Password: u.Password,
@ -54,17 +59,15 @@ func (w *WebdavConfig) StartServer() {
FileSystem: WebDavDir{ FileSystem: WebDavDir{
Dir: webdav.Dir(u.Scope), Dir: webdav.Dir(u.Scope),
NoSniff: false, NoSniff: false,
panClientProxy: &PanClientProxy{ panClientProxy: panClientProxy,
PanUser: w.PanUser,
PanDriveId: w.PanDriveId,
PanTransferUrlType: w.TransferUrlType,
},
fileInfo: wdfi, fileInfo: wdfi,
uploadChunkSize: w.UploadChunkSize, uploadChunkSize: w.UploadChunkSize,
}, },
LockSystem: webdav.NewMemLS(), LockSystem: webdav.NewMemLS(),
}, },
} }
// load & cache root folder info
_, _ = panClientProxy.FileListGetAll(u.Scope)
} }
cfg := &Config{ cfg := &Config{
Auth: true, Auth: true,

View File

@ -53,7 +53,11 @@ func sliceClean(name string) string {
// formatAbsoluteName 将name名称更改为绝对路径 // formatAbsoluteName 将name名称更改为绝对路径
func (d WebDavDir) formatAbsoluteName(pathStr string) string { func (d WebDavDir) formatAbsoluteName(pathStr string) string {
if strings.Index(pathStr, "/") != 0 { if strings.Index(pathStr, "/") != 0 {
if d.fileInfo.fullPath != "/" {
pathStr = d.fileInfo.fullPath + "/" + pathStr pathStr = d.fileInfo.fullPath + "/" + pathStr
} else {
pathStr = d.fileInfo.fullPath + pathStr
}
} }
return pathStr return pathStr
} }