package gostorage import ( "github.com/ks3sdklib/aws-sdk-go/aws" "github.com/ks3sdklib/aws-sdk-go/aws/credentials" "github.com/ks3sdklib/aws-sdk-go/service/s3" "io" ) // Ksyun 金山云 type Ksyun struct { AccessKey string SecretKey string Endpoint string Regions string BucketName string client *s3.S3 // 驱动 } // NewKsyun 初始化 // https://docs.ksyun.com/documents/40487 func NewKsyun(accessKey string, secretKey string, endpoint string, regions string, bucketName string) *Ksyun { app := &Ksyun{AccessKey: accessKey, SecretKey: secretKey, Endpoint: endpoint, Regions: regions, BucketName: bucketName} var cre = credentials.NewStaticCredentials(accessKey, secretKey, "") app.client = s3.New(&aws.Config{ Region: regions, Credentials: cre, Endpoint: endpoint, }) return app } // Bucket 存储空间 func (c *Ksyun) Bucket(name string) *Ksyun { c.BucketName = name return c } // PutObject 上传文件流 // @param file 文件流 // @param filePath 文件路径 // @param fileName 文件名称 func (c *Ksyun) PutObject(file io.Reader, filePath, fileName, acl string) (resp FileInfo, err error) { objectKey := filePath if fileName != "" { objectKey = filePath + "/" + fileName } params := &s3.PutObjectInput{ Bucket: aws.String(c.BucketName), Key: aws.String(objectKey), ACL: aws.String(acl), //Body: bytes.NewReader(file), ContentType: aws.String("application/octet-stream"), } _, err = c.client.PutObject(params) resp.Path = filePath resp.Name = fileName resp.Url = objectKey return }