使用 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"});
我的设备上有一个文件存储在如下文件夹中:
/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"});