All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 8m32s
27 lines
979 B
Go
27 lines
979 B
Go
package storage
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"time"
|
|
)
|
|
|
|
type Provider interface {
|
|
Upload(ctx context.Context, key string, reader io.Reader, contentType string) error
|
|
UploadWithMetadata(ctx context.Context, key string, reader io.Reader, contentType string, metadata map[string]string) error
|
|
Stat(ctx context.Context, key string) (*ObjectMetadata, error)
|
|
Download(ctx context.Context, key string) (io.ReadCloser, error)
|
|
DownloadToTemp(ctx context.Context, key string) (localPath string, cleanup func(), err error)
|
|
Delete(ctx context.Context, key string) error
|
|
Exists(ctx context.Context, key string) (bool, error)
|
|
GetUploadURL(ctx context.Context, key string, contentType string, expires time.Duration) (string, error)
|
|
GetDownloadURL(ctx context.Context, key string, expires time.Duration) (string, error)
|
|
}
|
|
|
|
// ObjectMetadata 是对象存储返回的受控对象属性。
|
|
type ObjectMetadata struct {
|
|
Size int64
|
|
ContentType string
|
|
Metadata map[string]string
|
|
}
|