fix(115): enforce 20GB file size limit on uploadev (#7447 close #7413)

- Introduce a file size restriction to handle uploads more securely.
- Provide an informative error for uploads that exceed the new limit.
pull/7453/head
Shelton Zhu 2024-11-01 20:52:19 +08:00 committed by GitHub
parent a701432b8b
commit 216e3909f3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 9 additions and 3 deletions

View File

@ -2,6 +2,7 @@ package _115
import (
"context"
"fmt"
"strings"
"sync"
@ -121,7 +122,10 @@ func (d *Pan115) Put(ctx context.Context, dstDir model.Obj, stream model.FileStr
if err := d.WaitLimit(ctx); err != nil {
return err
}
if stream.GetSize() > utils.GB*20 { // TODO 由于官方分片上传接口失效所以使用普通上传小于20GB的文件
return fmt.Errorf("unsupported file size: 20GB limit exceeded")
}
// 分片上传
var (
fastInfo *driver115.UploadInitResp
dirID = dstDir.GetID()
@ -177,11 +181,13 @@ func (d *Pan115) Put(ctx context.Context, dstDir model.Obj, stream model.FileStr
}
// 闪传失败,上传
if stream.GetSize() <= utils.KB { // 文件大小小于1KB改用普通模式上传
// if stream.GetSize() <= utils.KB{ // 文件大小小于1KB改用普通模式上传
if stream.GetSize() <= utils.GB*20 { // TODO 由于官方分片上传接口失效所以使用普通上传小于20GB的文件
return d.client.UploadByOSS(&fastInfo.UploadOSSParams, stream, dirID)
}
return driver115.ErrUnexpected
// 分片上传
return d.UploadByMultipart(&fastInfo.UploadOSSParams, stream.GetSize(), stream, dirID)
// return d.UploadByMultipart(&fastInfo.UploadOSSParams, stream.GetSize(), stream, dirID)
}
func (d *Pan115) OfflineList(ctx context.Context) ([]*driver115.OfflineTask, error) {