【发布时间】:2015-03-17 21:44:44
【问题描述】:
我正在构建一个库来“节点化”HTML5 File Api(当前处于 alpha 版本)[0],以使其适用于二进制内容并且不会遇到字符集问题,我正在使用 Buffer[1]实用程序。
但是 HTML5 File API 使用 Blob 原生对象。实际上,我使用的是 'application/octet-stream' 类型和 Buffer 编码中的 'binary' 类型。但是,我想使用 base64 来防止出现任何问题:
CoFS.prototype.writeFile = function (fileName, data, encoding, callback) {
var self = this;
if (Buffer.isBuffer(data)) {
callback = encoding;
encoding = undefined;
} else {
data = new Buffer(data, encoding);
}
this._ifready(function () {
self.getFileEntry(fileName, {create: true, exclusive: true}, function (err, fileEntry) {
if (err) return callback(new Error("Error getting file access " + err.message));
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function () {
callback(null);
};
fileWriter.onerror = function(e) {
callback(new Error(e.toString()));
};
var blob = new Blob([data.toString('binary')], {type: 'application/octet-stream'});
fileWriter.write(blob);
}, function () {
callback(new Error('Error writing ' + fileName));
});
});
});
};
精确到:
var blob = new Blob([data.toString('binary')], {type: 'application/octet-stream'});
我把 MDN 页面 [2] 变红了,但我没有看到任何关于编码的信息。
有什么办法可以完成这样的事情吗?:
var blob = new Blob([data.toString('base64')], {type: 'application/octet-stream', encoding: 'base64'});
谢谢。
【问题讨论】:
-
如果您的目标是将二进制数据写入文件,则应使用字节数组而不是字符串。
-
好吧,我意识到 Buffer 对象是一个 Int8Array :D
标签: javascript html blob html5-filesystem