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

时间:2017-12-13 12:56:54

标签: javascript php tizen

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

/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的Filesystem 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);
          }
});

1 个答案:

答案 0 :(得分:1)

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

实际上,readBytes返回一个对应于字节的数字数组,但是数组没有格式化为字节数组。

从这个数组中创建一个新的Uint8Array就可以了:

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