Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用blob创建的图像仅包含数字和逗号_Javascript_Php_Tizen - Fatal编程技术网

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

Javascript 使用blob创建的图像仅包含数字和逗号,javascript,php,tizen,Javascript,Php,Tizen,我的设备上有一个文件存储在如下文件夹中: /opt/share/folder/image.jpg 我想使用一些ajax请求在我的服务器上上传这个文件,就像使用标准HTML表单一样 经过几次搜索,我创建了一个Blob文件并上传到服务器上;这很有效。但问题是到达时我的jpeg已损坏,并且包含一系列数字和逗号(从技术上讲,是源文件的字节): Tizen的文件系统API允许我打开这个文件并读取它的字节——我就是这么做的。因此,我使用以下代码读取字节,创建blob并将其上载到我的服务器上: var ra

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

/opt/share/folder/image.jpg
我想使用一些ajax请求在我的服务器上上传这个文件,就像使用标准HTML表单一样

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

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返回一个与字节对应的数字数组,但该数组的格式不是字节数组

从该阵列创建新的Uint8Array实现了以下目的:

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

我相信您的Ajax请求是以JSON而不是二进制表示的形式发送数据。您需要在服务器上将json转换回二进制格式。您还可以考虑将图像转换为Base64格式,然后通过导线发送。通过这种方式,您可以确保数据不会因某些字符集转换等而损坏。@treeno数据将作为表单数据发送,这意味着创建的文件将正确到达服务器端。但是尝试将这个blob作为img附加到blueimploadimage库中会发现这个blob在源代码处是不正确的。readBytes似乎没有创建正确的字节数组?
var raw = fs.readBytes(1024);
var byteArray = new Uint8Array(raw);
var blob = new Blob([byteArray], {type:"image/jpeg"});