首页 > 解决方案 > 如何从前端 Javascript 中的 S3 中的 gzip-ed .json 文件中获取 JSON?

问题描述

这是我遇到的问题的简化版本-基本上我只是想从 .gz 文件 (MOCK_DATA.json.gz) 中的 S3 中获取数据

我正在使用 axios 尝试从 S3 URL 检索数据。我听说一般来说,有一种方法可以通过将标题设置为允许内容编码:gzip 来自动解压缩 + 解码响应。

在高层次上,我有这样的事情:

axios.getRequest("http://<my bucket>.s3.amazonaws.com/MOCK_DATA.json.gz", {headers: headers})
     .then(response => // do stuff with response)

当我尝试记录响应时,它看起来像是静止的 gzip 压缩,我不确定解决这个问题的最佳方法。

我尝试在请求上设置一些标头以指定预期的内容类型,但到目前为止无济于事。

我也可以尝试在收到响应后手动解码响应,但我被告知它应该自动发生。有没有人有关于我应该如何处理这个问题的提示,或者是否可能对客户端解码的工作方式存在误解?

标签: amazon-s3axiosgzip

解决方案


我发现了这个问题——我不必在前端代码/.gz 文件的使用者上搞乱,我只需要向 S3 对象本身添加一些元数据。

它在上传时自动设置了内容类型:

Content-Type: application/x-gzip

但我还必须设置:

Content-Encoding: gzip

在 S3 对象属性中,以便在从 JS 代码处理它时正确获取值解码。


推荐阅读