Go:如何通过 GIN-Router 从 AWS S3 将文件作为二进制流发送到浏览器?

我如何将从 S3 收到的文件作为二进制响应发送到 Gin?


比方说,我有以下代码从 S3 存储桶中获取图像:


response, err := i.s3Client.GetObject(context.TODO(), &s3.GetObjectInput{

    Bucket: aws.String("test"),

    Key:    aws.String(filename),

})

如何将此响应通过管道传输到 Gin-router 的响应上下文中?


我可以做类似的事情:


body, err := ioutil.ReadAll(response.Body)

if err != nil {

    ctx.JSON(http.StatusBadRequest, err)

    return

}

但是如何告诉杜松子酒将其作为输出呢?我想到但行不通的是:


ctx.Header("Content-Type", *response.ContentType)

ctx.Header("Cache-control", "max-age="+strconv.Itoa(60*60*24*365))

ctx.Write(body)

有什么我可以在这里做的吗?


一只甜甜圈
浏览 155回答 1
1回答

森林海

你几乎已经完成:而不是ctx.Write使用这个:ctx.DataFromReader(200, response.ContentLength, *response.ContentType, response.Body, nil)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go