0

我一直在寻找客户端转换为文件的 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();
4

1 回答 1

0

你并没有真正说出你的最终目标是什么,但我猜你想生成一个用户可以从浏览器下载的文件。使用Blob API很简单。以下内容基于(阅读:几乎与)MDN 文档中的一个示例

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>

于 2017-02-10T16:23:03.577 回答