func()

in cdn-aliyun/aliyun.go [320:354]


func (c *CDN) Upload(filePath string, file io.Reader, size int64) (err error) {
	client, err := oss.New(c.Config.Endpoint, c.Config.AccessKeyID, c.Config.AccessKeySecret)
	if err != nil {
		log.Error(plugin.MakeTranslator(i18n.ErrMisStorageConfig), err)
		return
	}
	bucket, err := client.Bucket(c.Config.BucketName)
	if err != nil {
		log.Error(plugin.MakeTranslator(i18n.ErrMisStorageConfig), err)
		return
	}

	if !c.CheckFileType(filePath) {
		log.Error(plugin.MakeTranslator(i18n.ErrUnsupportedFileType), filePath)
		return
	}

	if size > c.maxFileSizeLimit() {
		log.Error(plugin.MakeTranslator(i18n.ErrOverFileSizeLimit))
		return
	}

	objectKey := c.createObjectKey(filePath)
	request := &oss.PutObjectRequest{
		ObjectKey: objectKey,
		Reader:    file,
	}
	respBody, err := bucket.DoPutObject(request, nil)
	if err != nil {
		log.Error(plugin.MakeTranslator(i18n.ErrUploadFileFailed), err)
		return
	}
	defer respBody.Close()
	return c.checkCDNAvailable(objectKey)
}