使用 blob 创建的图像仅包含数字和逗号

Image created with blob only contains numbers and commas

我的设备上有一个文件存储在如下文件夹中:

/opt/share/folder/image.jpg

我想使用一些 ajax 请求将此文件上传到我的服务器,就像我使用标准 HTML 表单一样。

几经搜索,我来创建一个Blob文件并上传到服务器;这有效。但问题是我到达时的 jpeg 是 损坏的 并且包含一组数字和逗号(从技术上讲,源文件的字节数):

255,216,255,224,0,16,74,70,73,70,0,1,1,0,0,1,0,1,0,0,255,219,0,67,0,8,6,6,7,6,5,8,7,7

Tizen 的文件系统 API 允许我打开这个文件并读取它的字节——这就是我所做的。所以我使用以下代码读取字节,创建一个 blob 并将其上传到我的服务器:

var raw = fs.readBytes(1024);                    
var blob = new Blob([raw], {type:"image/jpeg"});
var formData = new FormData();
formData.append('screenCapture', blob);

$.ajax({
   type: 'post',
   url: myurl,
   processData: false,
   contentType: false,
   data: formData,
   success: function(data){
             ...

   },
   error: function(jqxhr, status, msg){
          console.log("ERROR! " + msg);
          }
});

我终于发现我的代码有什么问题了。

其实readBytes return一个字节对应的数字数组,只是数组没有格式化为字节数组。

从这个数组创建一个新的 Uint8Array 成功了:

var raw = fs.readBytes(1024);
var byteArray = new Uint8Array(raw);
var blob = new Blob([byteArray], {type:"image/jpeg"});