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 }