gpt4 book ai didi

javascript - 如何在 HTML5 Blob 对象上使用 base64 编码

转载 作者:搜寻专家 更新时间:2023-10-31 23:27:16 24 4
gpt4 key购买 nike

我正在构建一个库来“节点化”HTML5 File Api(目前处于 alpha 阶段)[0],使其能够处理二进制内容并且没有字符集问题,我正在使用 Buffer[1]效用。

但是 HTML5 文件 API 使用 Blob 原生对象。实际上,我使用的是 Buffer 编码中的类型“application/octet-stream”和“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 扩展而来的,并且两者是兼容的。

我现在的代码是:

var blob = new Blob(
[data], // Data is a buffer!
{
type: 'application/octet-stream'
}
);

fileWriter.write(blob);

对于读取,我使用 readAsArrayBuffer 方法,你可以这样做:

var d = new Int8Array(arr); // When arr is arrayBuffer
var buf = new Buffer(d); // And works!

这解决了我的问题。对于转换 base64 编码的内容并在 blob 中使用,使用 Buffer,可以是:

var blob = new Blob(
[new Buffer(cleanData, 'base64')],
{
type: 'application/octet-stream'
}
);

关于javascript - 如何在 HTML5 Blob 对象上使用 base64 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28032211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com