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

  1. Read the embedded err text — Qiniu returns specific codes (e.g. 631 no such bucket, 612 no such file) that identify the cause.
  2. Verify qiniu access-key/secret-key and bucket name in config.yaml against the Qiniu console.
  3. Treat 'no such file' as already-deleted if your flow allows idempotent deletes (check err code before surfacing as failure).
  4. Check network egress to Qiniu RS endpoints (rs.qiniu.com or zone-specific).
  5. 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

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


AI-assisted analysis of flipped-aurora/gin-vue-admin@3136500ef3 (2026-08-31). Data as JSON: /api/errors/5d0a21d0f0620824. Report an issue: GitHub.