From f431eb0cbdcb0b8234f80b682736605a306a338c Mon Sep 17 00:00:00 2001 From: HFO4 <912394456@qq.com> Date: Sat, 8 Oct 2022 19:09:51 +0800 Subject: [PATCH] fix: metadata mismatch if file name contains `%` while uploading to OneDrive/SharePoint (#1301) --- pkg/filesystem/driver/onedrive/api.go | 16 ++++--------- pkg/filesystem/driver/onedrive/api_test.go | 27 +++++----------------- service/callback/upload.go | 2 +- 3 files changed, 12 insertions(+), 33 deletions(-) diff --git a/pkg/filesystem/driver/onedrive/api.go b/pkg/filesystem/driver/onedrive/api.go index 1e41b72..c89e0d3 100644 --- a/pkg/filesystem/driver/onedrive/api.go +++ b/pkg/filesystem/driver/onedrive/api.go @@ -37,19 +37,13 @@ const ( // GetSourcePath 获取文件的绝对路径 func (info *FileInfo) GetSourcePath() string { - res, err := url.PathUnescape( - strings.TrimPrefix( - path.Join( - strings.TrimPrefix(info.ParentReference.Path, "/drive/root:"), - info.Name, - ), - "/", + return strings.TrimPrefix( + path.Join( + strings.TrimPrefix(info.ParentReference.Path, "/drive/root:"), + info.Name, ), + "/", ) - if err != nil { - return "" - } - return res } // Error 实现error接口 diff --git a/pkg/filesystem/driver/onedrive/api_test.go b/pkg/filesystem/driver/onedrive/api_test.go index fb6393d..7809df2 100644 --- a/pkg/filesystem/driver/onedrive/api_test.go +++ b/pkg/filesystem/driver/onedrive/api_test.go @@ -138,28 +138,13 @@ func TestRequest(t *testing.T) { func TestFileInfo_GetSourcePath(t *testing.T) { asserts := assert.New(t) - - // 成功 - { - fileInfo := FileInfo{ - Name: "%e6%96%87%e4%bb%b6%e5%90%8d.jpg", - ParentReference: parentReference{ - Path: "/drive/root:/123/321", - }, - } - asserts.Equal("123/321/文件名.jpg", fileInfo.GetSourcePath()) - } - - // 失败 - { - fileInfo := FileInfo{ - Name: "%e6%96%87%e4%bb%b6%e5%90%8g.jpg", - ParentReference: parentReference{ - Path: "/drive/root:/123/321", - }, - } - asserts.Equal("", fileInfo.GetSourcePath()) + fileInfo := FileInfo{ + Name: "%e6%96%87%e4%bb%b6%e5%90%8d.jpg", + ParentReference: parentReference{ + Path: "/drive/root:/123/321", + }, } + asserts.Equal("123/321/文件名.jpg", fileInfo.GetSourcePath()) } func TestClient_GetRequestURL(t *testing.T) { diff --git a/service/callback/upload.go b/service/callback/upload.go index 25390bc..7c8aeef 100644 --- a/service/callback/upload.go +++ b/service/callback/upload.go @@ -239,7 +239,7 @@ func (service *S3Callback) PreProcess(c *gin.Context) serializer.Response { return ProcessCallback(service, c) } -// PreProcess 对OneDrive客户端回调进行预处理验证 +// PreProcess 对从机客户端回调进行预处理验证 func (service *UploadCallbackService) PreProcess(c *gin.Context) serializer.Response { // 创建文件系统 fs, err := filesystem.NewFileSystemFromCallback(c)