Skip to content

Commit

Permalink
fix(115): enforce 20GB file size limit on uploadev (AlistGo#7447 close
Browse files Browse the repository at this point in the history
…AlistGo#7413)

- Introduce a file size restriction to handle uploads more securely.
- Provide an informative error for uploads that exceed the new limit.
  • Loading branch information
SheltonZhu authored Nov 1, 2024
1 parent a701432 commit 216e390
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions drivers/115/driver.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package _115

import (
"context"
"fmt"
"strings"
"sync"

Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit 216e390

Please sign in to comment.