任何意见,将不胜感激。我的 Web 应用程序中有一个 json 变量,我想通过预签名的 URL 压缩并上传到 S3。
我能够成功上传 JSON,但我无法 gzip JSON 然后上传它。
我尝试构建 gzipped json 的三种不同方式是:
// example json
const someJson = { testOne: 'a', testTwo: 'b' };
// Attempt one
const stringUtf16 = JSON.stringify(someJson);
const resultAsBinString = pako.gzip(stringUtf16);
// Attempt two
const stringUtf16 = JSON.stringify(someJson);
const resultAsBinString = pako.gzip(stringUtf16, { to: 'string' });
// Attempt three
const stringUtf16ThatWeNeedInUtf8 = JSON.stringify(someJson);
const stringUtf8 = unescape(encodeURIComponent(stringUtf16ThatWeNeedInUtf8));
const resultAsBinString = pako.gzip(stringUtf8);
对于每次尝试,我都通过 Angular 的 HTTP 客户端上传了 resultAsBinString,标题为 Content-Type: 'application/x-gzip' 和 Content-Encoding: 'gzip'
但是当(如果经常出现网络错误)文件随后从 S3 下载时,当尝试在终端中使用 gzip 或 gunzip 解压缩时,会给出错误消息:'not in gzip format'
我试图遵循的来源:
https://github.com/nodeca/pako/issues/55 https://github.com/nodeca/pako/blob/master/examples/browser.html