stat
This commit is contained in:
parent
0820c34450
commit
271a3579a1
|
|
@ -10,3 +10,4 @@ test
|
|||
go.sum
|
||||
pkg
|
||||
test.go
|
||||
.claude
|
||||
|
|
|
|||
|
|
@ -149,6 +149,10 @@ func (s *Minio) Stat(objectName string) (*ObjectInfo, error) {
|
|||
objectName = strings.TrimLeft(objectName, "/ ")
|
||||
stat, err := s.client.StatObject(s.config.Bucket, objectName, minio.StatObjectOptions{})
|
||||
if err != nil {
|
||||
// 文件不存在不算错误,返回 nil, nil
|
||||
if isMinioNotFound(err) {
|
||||
return nil, nil
|
||||
}
|
||||
log.Errorf("stat object from minio error:%s", err.Error())
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -162,6 +166,18 @@ func (s *Minio) Stat(objectName string) (*ObjectInfo, error) {
|
|||
return info, nil
|
||||
}
|
||||
|
||||
// isMinioNotFound 检查是否为 MinIO 文件不存在错误
|
||||
func isMinioNotFound(err error) bool {
|
||||
if err == nil {
|
||||
return false
|
||||
}
|
||||
// MinIO 返回 NoSuchKey 表示文件不存在
|
||||
if respErr, ok := err.(minio.ErrorResponse); ok {
|
||||
return respErr.Code == "NoSuchKey" || respErr.Code == "NotFound"
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (s *Minio) Fetch(urlStr, objectName string, local ...bool) error {
|
||||
if err := s.Init(); err != nil {
|
||||
return err
|
||||
|
|
|
|||
|
|
@ -191,6 +191,10 @@ func (s *Qiniu) Stat(objectName string) (*ObjectInfo, error) {
|
|||
bucketManager := storage.NewBucketManager(mac, &cfg)
|
||||
fileInfo, err := bucketManager.Stat(s.config.Bucket, objectName)
|
||||
if err != nil {
|
||||
// 文件不存在不算错误,返回 nil, nil
|
||||
if isQiniuNotFound(err) {
|
||||
return nil, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
|
@ -202,6 +206,18 @@ func (s *Qiniu) Stat(objectName string) (*ObjectInfo, error) {
|
|||
return info, nil
|
||||
}
|
||||
|
||||
// isQiniuNotFound 检查是否为七牛云文件不存在错误
|
||||
func isQiniuNotFound(err error) bool {
|
||||
if err == nil {
|
||||
return false
|
||||
}
|
||||
// 七牛云错误码 612 表示文件不存在
|
||||
if respErr, ok := err.(*storage.ErrorInfo); ok {
|
||||
return respErr.Code == 612
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (s *Qiniu) Fetch(url, objectName string, local ...bool) error {
|
||||
if len(local) > 0 && local[0] == true {
|
||||
return s.fetchLocal(url, objectName)
|
||||
|
|
|
|||
Loading…
Reference in New Issue