转换后将Uint8Array保存到gzip

时间:2017-02-10 15:39:20

标签: javascript gzip file-conversion uint8array

我一直在寻找客户端转换为gzip文件(在浏览器中)并找到pako.

通过使用服务器端的Node.js函数,我就是这个转换的运行示例(至少这是我从我所读到的对Node.js的理解)。

我想将“fs”(用于写入文件)和“buffer”(用于保存到可写入负责写入文件的新函数的格式)替换为某些本机javascript函数。

这是代码。

var pako = require('pako'), data = "sample text";
var fs = require('fs');

data = pako.gzip(data);
var buffer = new Buffer(data.length);
for (var i = 0; i < data.length; i++) {

    buffer.writeUInt8(data[i], i);

}

var wstream = fs.createWriteStream('output.gz');

wstream.write(buffer);
wstream.end();

1 个答案:

答案 0 :(得分:0)

你并没有真正说出你的目标是什么,但我猜你想生成一个用户可以从浏览器下载的文件。使用简单的Blob API。以下是基于(阅读:几乎相同)an example in the MDN docs

const data = 'sample text';
const gzipped = pako.gzip(data); // => Uint8Array
const blob = new Blob([gzipped], {type: 'application/gzip'});
const blobUrl = URL.createObjectURL(blob);

console.log('Generated Blob; object URL: %s', blobUrl);

// render link
const link = document.createElement('a');
link.setAttribute('href', blobUrl);
link.innerHTML = 'Download file';
document.body.appendChild(link);
<script src="https://unpkg.com/pako@1.0.4/dist/pako_deflate.js"></script>