Feat: check policy update before upload

pull/247/head
HFO4 4 years ago
parent 2f1f619f2f
commit e8c4660c38

@ -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…
Cancel
Save