flipped-aurora/gin-vue-admin · error
function bucketManager.Delete() failed, err:
Error message
function bucketManager.Delete() failed, err:
What it means
DeleteFile for Qiniu failed when calling bucketManager.Delete — the Qiniu Kodo API rejected the delete request for the given bucket/key. The qiniu-sdk-go returns an error for auth failure (bad AccessKey/SecretKey or signature), missing object in some flows, wrong bucket, or network problems; the message embeds that error text.
Source
Thrown at server/utils/upload/qiniu.go:67
return "", "", errors.New("function formUploader.Put() failed, err:" + putErr.Error())
}
return global.GVA_CONFIG.Qiniu.ImgPath + "/" + ret.Key, ret.Key, nil
}
//@author: [piexlmax](https://github.com/piexlmax)
//@author: [ccfish86](https://github.com/ccfish86)
//@author: [SliverHorn](https://github.com/SliverHorn)
//@object: *Qiniu
//@function: DeleteFile
//@description: 删除文件
//@param: key string
//@return: error
func (*Qiniu) DeleteFile(ctx context.Context, key string) error {
bucketManager := newBucketManager()
if err := bucketManager.Delete(global.GVA_CONFIG.Qiniu.Bucket, key); err != nil {
logger.WithCtx(ctx).Mod("upload").Err(err).Error("function bucketManager.Delete() failed")
return errors.New("function bucketManager.Delete() failed, err:" + err.Error())
}
return nil
}
// newBucketManager 创建七牛 BucketManager 实例。
func newBucketManager() *storage.BucketManager {
mac := qbox.NewMac(global.GVA_CONFIG.Qiniu.AccessKey, global.GVA_CONFIG.Qiniu.SecretKey)
cfg := qiniuConfig()
return storage.NewBucketManager(mac, cfg)
}
// Exists 检查对象是否存在,七牛 code 612(或 "no such file")视为不存在。
func (*Qiniu) Exists(ctx context.Context, key string) (bool, error) {
bucketManager := newBucketManager()
if _, err := bucketManager.Stat(global.GVA_CONFIG.Qiniu.Bucket, key); err != nil {
msg := err.Error()
// 七牛 612 表示资源不存在
if strings.Contains(msg, "612") || strings.Contains(msg, "no such file") || strings.Contains(msg, "no such file or directory") {View on GitHub (pinned to 3136500ef3)
Solutions
- Read the embedded err text — Qiniu returns specific codes (e.g. 631 no such bucket, 612 no such file) that identify the cause.
- Verify qiniu access-key/secret-key and bucket name in config.yaml against the Qiniu console.
- Treat 'no such file' as already-deleted if your flow allows idempotent deletes (check err code before surfacing as failure).
- Check network egress to Qiniu RS endpoints (rs.qiniu.com or zone-specific).
- Confirm the key passed in matches exactly what UploadFile returned (ret.Key), including timestamp prefix.
Example fix
// before
if err := bucketManager.Delete(global.GVA_CONFIG.Qiniu.Bucket, key); err != nil {
return errors.New("function bucketManager.Delete() failed, err:" + err.Error())
}
// after — tolerate already-missing objects
if err := bucketManager.Delete(global.GVA_CONFIG.Qiniu.Bucket, key); err != nil {
var e *storage.ErrorInfo
if errors.As(err, &e) && e.Code == 612 {
return nil // already deleted
}
return errors.New("function bucketManager.Delete() failed, err:" + err.Error())
} Defensive patterns
Strategy: try-catch
Validate before calling
if key == "" {
return errors.New("qiniu delete skipped: empty key")
} Try / catch
if err := q.DeleteFile(ctx, key); err != nil {
if strings.Contains(err.Error(), "no such file") {
logger.Warn("qiniu object already absent: %s", key) // idempotent success
return nil
}
logger.Error("qiniu delete failed: %v", err)
return fmt.Errorf("delete failed: %w", err)
} Prevention
- Store the exact key returned by UploadFile (ret.Key) so deletes target the right object.
- Treat 'no such file' (612) as success for idempotent cleanup flows.
- Verify Qiniu credentials after rotation; signature errors surface here.
- Log and monitor delete failures to catch bucket/zone misconfiguration early.
When it happens
Trigger: Calling Qiniu.DeleteFile when bucketManager.Delete returns an error: invalid credentials/signature, bucket name wrong, key not found (579/612-style responses), or connectivity failure to the Qiniu RS API host.
Common situations: Rotated or mistyped access keys in config, deleting a key that was already removed or never existed, bucket/zone mismatch, egress blocked from server to Qiniu API hosts, stale keys after manual console deletion.
Related errors
- delete failed, code: %d
- function formUploader.Put() failed, err:
- function bucketManager.Stat() failed, err:
- function bucketManager.Batch() failed, err:
- function bucketManager.ListFiles() failed, err:
AI-assisted analysis of flipped-aurora/gin-vue-admin@3136500ef3 (2026-08-31).
Data as JSON: /api/errors/5d0a21d0f0620824.
Report an issue: GitHub.