我有一个名为的请求处理程序Download
,我想从 Amazon S3 访问一个大文件并将其推送到用户的浏览器。我的目标是:
在授予用户访问文件的权限之前记录一些请求信息
不要将文件过多地缓冲到内存中。文件可能会变得太大。
这是我迄今为止探索的内容:
func Download(w http.ResponseWriter, r *http.Request) {
sess := session.New(&aws.Config{
Region: aws.String("eu-west-1"),
Endpoint: aws.String("s3-eu-west-1.amazonaws.com"),
S3ForcePathStyle: aws.Bool(true),
Credentials: cred,
})
downloader := s3manager.NewDownloader(sess)
// I can't write directly into the ResponseWriter. It doesn't implement WriteAt.
// Besides, it doesn't seem like the right thing to do.
_, err := downloader.Download(w, &s3.GetObjectInput{
Bucket: aws.String(BUCKET),
Key: aws.String(filename),
})
if err != nil {
log.Error(4, err.Error())
return
}
}
我想知道是否没有更好的方法(考虑到我正在努力实现的目标)。
欢迎任何建议。先感谢您 :-)
白板的微信
慕娘9325324
相关分类