Feat: check policy update before upload
This commit is contained in:
parent
2f1f619f2f
commit
e8c4660c38
3 changed files with 18 additions and 1 deletions
|
@ -31,7 +31,7 @@ type UploadPolicy struct {
|
|||
Expiration int64 `json:"expiration"`
|
||||
CallbackURL string `json:"notify-url"`
|
||||
ContentLength uint64 `json:"content-length"`
|
||||
ContentLengthRange string `json:"content-length-range"`
|
||||
ContentLengthRange string `json:"content-length-range,omitempty"`
|
||||
AllowFileType string `json:"allow-file-type,omitempty"`
|
||||
}
|
||||
|
||||
|
@ -262,6 +262,8 @@ func (handler Driver) Token(ctx context.Context, TTL int64, key string) (seriali
|
|||
return serializer.UploadCredential{}, errors.New("无法获取文件大小")
|
||||
}
|
||||
|
||||
// 检查文件大小
|
||||
|
||||
// 生成回调地址
|
||||
siteURL := model.GetSiteURL()
|
||||
apiBaseURI, _ := url.Parse("/api/v3/callback/upyun/" + key)
|
||||
|
|
|
@ -151,6 +151,13 @@ func (fs *FileSystem) GetUploadToken(ctx context.Context, path string, size uint
|
|||
|
||||
var err error
|
||||
|
||||
// 检查文件大小
|
||||
if fs.User.Policy.MaxSize != 0 {
|
||||
if size > fs.User.Policy.MaxSize {
|
||||
return nil, ErrFileSizeTooBig
|
||||
}
|
||||
}
|
||||
|
||||
// 是否需要预先生成存储路径
|
||||
var savePath string
|
||||
if fs.User.Policy.IsPathGenerateNeeded() {
|
||||
|
|
|
@ -13,6 +13,7 @@ type UploadCredentialService struct {
|
|||
Path string `form:"path" binding:"required"`
|
||||
Size uint64 `form:"size" binding:"min=0"`
|
||||
Name string `form:"name"`
|
||||
Type string `form:"type"`
|
||||
}
|
||||
|
||||
// Get 获取新的上传凭证
|
||||
|
@ -23,6 +24,13 @@ func (service *UploadCredentialService) Get(ctx context.Context, c *gin.Context)
|
|||
return serializer.Err(serializer.CodePolicyNotAllowed, err.Error(), err)
|
||||
}
|
||||
|
||||
// 存储策略是否一致
|
||||
if service.Type != "" {
|
||||
if service.Type != fs.User.Policy.Type {
|
||||
return serializer.Err(serializer.CodePolicyNotAllowed, "存储策略已变更,请刷新页面", nil)
|
||||
}
|
||||
}
|
||||
|
||||
ctx = context.WithValue(ctx, fsctx.GinCtx, c)
|
||||
credential, err := fs.GetUploadToken(ctx, service.Path, service.Size, service.Name)
|
||||
if err != nil {
|
||||
|
|
Loading…
Add table
Reference in a new issue