我正在构建一个Chrome扩展程序,我在其中模拟表单POST以将图像发送到服务器。我设法上传了文件,但其内容却被扭曲了。通过比较上传的字节数组和原始的字节数组,可以观察到每个字节> 127被转换为2个其他字节。
例如:137 - > 194 137
233 -> 195 169
Chrome开发者工具中的POST有效负载表明在发送请求之前添加了冗余字节。
我的原始文件内容:
‰PNG ....
内容记录在网络负载中
‰PNG ....
不应该在内容之前存在的字符。你知道如何避免这个问题吗?以下是我用来测试的代码:
var fr = new FileReader();
fr.onloadend = function(evt){
if(evt.target.readyState == FileReader.DONE){
//str - image content
var str = "";
var byteStr = "";
var dv = new DataView(evt.target.result);
console.log("data length = " + evt.target.result.byteLength);
for(var i = 0 ; i < evt.target.result.byteLength; i++){
var b1 = dv.getUint8(i);
str += String.fromCharCode(b1);
byteStr += b1 + " ";
}
console.log(str);
console.log(byteStr);
//use jQuery.ajax to post image to server
attachImage(str, file.name,file.type);
}
}
fr.readAsArrayBuffer(file);
提前谢谢你。
答案 0 :(得分:0)
感谢朋友指点我这篇文章:Sending images from Canvas elements using Ajax and PHP $_FILES
我的问题现在可以解决了。该方法使用xhr sendasbinary来避免编码问题。
此致