无法在 ChromeOS 应用程序中正确保存类型化数组
Can't save a typed array in ChromeOS app correctly
我正在为 chromeOS 创建一个应用程序。问题是,当我尝试保存类型化数组时,它变得毫无意义。
例如,这是一个以十六进制格式打开的 PNG 文件Reader:
check it out
现在,我尝试使用以下代码保存相同的图像:
var data = new Uint8Array([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x08, 0x06, 0x00, 0x00, 0x00, 0x8D, 0x32, 0xCF, 0xBD, 0x00, 0x00, 0x00, 0x13, 0x49, 0x44, 0x41, 0x54, 0x78, 0xDA, 0x63, 0x60, 0x60, 0x60, 0xF8, 0x4F, 0x24, 0x1E, 0x55, 0x48, 0x4F, 0x85, 0x00, 0x34, 0xBD, 0x63, 0x9D, 0x45, 0xBF, 0x95, 0x85, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82]);
var blob = new Blob( data, {type:'application/octect-binary'} );
// Allow saving of our file
chrome.fileSystem.chooseEntry( {type:"saveFile"}, function (a)
{
a.createWriter( function (b)
{
b.write( blob );
});
});
但是你猜怎么着?我打开它,当我在 Hex Reader、THIS
中检查它时,它没有以 PNG 格式打开
所以问题是,什么、如何、何时、为什么? FML lmao ^.^'
一直试图保存 png 这么长时间...有一天我发誓..
Blob
构造函数定义为 new Blob( array, options )
,其中 array
记录为
array
is an Array
of ArrayBuffer
, ArrayBufferView
, Blob
, DOMString
objects, or a > mix of any of such objects, that will be put inside the Blob.
来源:https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob
在您的示例中,您将 Uint8Array
直接传递到 blob,这令人惊讶地没有给出错误,但它确实将错误的数据放入 Blob
.
试试这个
var data = new Uint8Array([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x08, 0x06, 0x00, 0x00, 0x00, 0x8D, 0x32, 0xCF, 0xBD, 0x00, 0x00, 0x00, 0x13, 0x49, 0x44, 0x41, 0x54, 0x78, 0xDA, 0x63, 0x60, 0x60, 0x60, 0xF8, 0x4F, 0x24, 0x1E, 0x55, 0x48, 0x4F, 0x85, 0x00, 0x34, 0xBD, 0x63, 0x9D, 0x45, 0xBF, 0x95, 0x85, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82]);
var blob = new Blob( [data], {type:'application/octect-binary'} );
// Allow saving of our file
chrome.fileSystem.chooseEntry( {type:"saveFile"}, function (a)
{
a.createWriter( function (b)
{
b.write( blob );
});
});
我正在为 chromeOS 创建一个应用程序。问题是,当我尝试保存类型化数组时,它变得毫无意义。
例如,这是一个以十六进制格式打开的 PNG 文件Reader: check it out
现在,我尝试使用以下代码保存相同的图像:
var data = new Uint8Array([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x08, 0x06, 0x00, 0x00, 0x00, 0x8D, 0x32, 0xCF, 0xBD, 0x00, 0x00, 0x00, 0x13, 0x49, 0x44, 0x41, 0x54, 0x78, 0xDA, 0x63, 0x60, 0x60, 0x60, 0xF8, 0x4F, 0x24, 0x1E, 0x55, 0x48, 0x4F, 0x85, 0x00, 0x34, 0xBD, 0x63, 0x9D, 0x45, 0xBF, 0x95, 0x85, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82]);
var blob = new Blob( data, {type:'application/octect-binary'} );
// Allow saving of our file
chrome.fileSystem.chooseEntry( {type:"saveFile"}, function (a)
{
a.createWriter( function (b)
{
b.write( blob );
});
});
但是你猜怎么着?我打开它,当我在 Hex Reader、THIS
中检查它时,它没有以 PNG 格式打开所以问题是,什么、如何、何时、为什么? FML lmao ^.^' 一直试图保存 png 这么长时间...有一天我发誓..
Blob
构造函数定义为 new Blob( array, options )
,其中 array
记录为
array
is anArray
ofArrayBuffer
,ArrayBufferView
,Blob
,DOMString
objects, or a > mix of any of such objects, that will be put inside the Blob.
来源:https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob
在您的示例中,您将 Uint8Array
直接传递到 blob,这令人惊讶地没有给出错误,但它确实将错误的数据放入 Blob
.
试试这个
var data = new Uint8Array([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x08, 0x06, 0x00, 0x00, 0x00, 0x8D, 0x32, 0xCF, 0xBD, 0x00, 0x00, 0x00, 0x13, 0x49, 0x44, 0x41, 0x54, 0x78, 0xDA, 0x63, 0x60, 0x60, 0x60, 0xF8, 0x4F, 0x24, 0x1E, 0x55, 0x48, 0x4F, 0x85, 0x00, 0x34, 0xBD, 0x63, 0x9D, 0x45, 0xBF, 0x95, 0x85, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82]);
var blob = new Blob( [data], {type:'application/octect-binary'} );
// Allow saving of our file
chrome.fileSystem.chooseEntry( {type:"saveFile"}, function (a)
{
a.createWriter( function (b)
{
b.write( blob );
});
});