【发布时间】:2015-08-22 03:34:34
【问题描述】:
我正在创建一个微服务来处理上传到 Amazon S3 的一些附件,我想要实现的是接受一个文件,然后将其直接存储到我的 Amazon S3 存储桶中,这是我当前的功能:
func upload_handler(w http.ResponseWriter, r *http.Request) {
file, header, err := r.FormFile("attachment")
if err != nil {
fmt.Fprintln(w, err)
return
}
defer file.Close()
fileSize, err := file.Seek(0, 2) //2 = from end
if err != nil {
panic(err)
}
fmt.Println("File size : ", fileSize)
bytes := make([]byte, fileSize)
// read into buffer
buffer := bufio.NewReader(file)
_, err = buffer.Read(bytes)
auth := aws.Auth{
AccessKey: "XXXXXXXXXXX",
SecretKey: "SECRET_KEY_HERE",
}
client := s3.New(auth, aws.EUWest)
bucket := client.Bucket("attachments")
err = bucket.Put(header.Filename, bytes, header.Header.Get("Content-Type"), s3.ACL("public-read"))
if err != nil {
fmt.Println(err)
os.Exit(1)
}
}
问题是存储在S3中的文件都损坏了,经过小验证,文件payload似乎没有被读取为字节
如何将文件转换为字节并正确存储到 S3 中?
【问题讨论】:
-
对于社区知识,为什么这个问题会收到负面评价?它提出了一个明确的问题,有足够的代码,以及看似正确的 ref 标签。为 Q 和 A 为我 +1..
标签: amazon-web-services go amazon-s3