来自 javascript 二进制字符串的 Blob
Blob from javascript binary string
我有一个用 FileReader.readAsBinaryString(blob).
创建的二进制字符串
我想用这个二进制字符串中表示的二进制数据创建一个 Blob。
您使用的 blob 是否不再可用?
一定要用readAsBinaryString
吗?您可以改用 readAsArrayBuffer
吗?使用数组缓冲区,重新创建 blob 会容易得多。
如果没有,您可以通过循环遍历字符串并构建字节数组然后从中创建 blob 来重建 blob。
$('input').change(function(){
var frb = new FileReader();
frb.onload = function(){
var i, l, d, array;
d = this.result;
l = d.length;
array = new Uint8Array(l);
for (var i = 0; i < l; i++){
array[i] = d.charCodeAt(i);
}
var b = new Blob([array], {type: 'application/octet-stream'});
window.location.href = URL.createObjectURL(b);
};
frb.readAsBinaryString(this.files[0]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="file">
我有一个用 FileReader.readAsBinaryString(blob).
我想用这个二进制字符串中表示的二进制数据创建一个 Blob。
您使用的 blob 是否不再可用?
一定要用readAsBinaryString
吗?您可以改用 readAsArrayBuffer
吗?使用数组缓冲区,重新创建 blob 会容易得多。
如果没有,您可以通过循环遍历字符串并构建字节数组然后从中创建 blob 来重建 blob。
$('input').change(function(){
var frb = new FileReader();
frb.onload = function(){
var i, l, d, array;
d = this.result;
l = d.length;
array = new Uint8Array(l);
for (var i = 0; i < l; i++){
array[i] = d.charCodeAt(i);
}
var b = new Blob([array], {type: 'application/octet-stream'});
window.location.href = URL.createObjectURL(b);
};
frb.readAsBinaryString(this.files[0]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="file">