Din*_*ing 6 ajax upload jquery binaryfiles put
我是JQuery的新手,我想使用JQuery Ajax将一些文件上传到服务器,仅在PUT方法中.当我向我的服务器发送一些二进制文件(例如gif或jpeg)时,上传成功,但二进制数据的内容被更改(它总是大于原始文件大小).我尝试更改内容类型或文件结果类型,但仍然无法正常工作.谁知道如何解决这个问题?
PS:我无法将二进制文件的内容编码成其他形式,因为我无法触及服务器的代码.
var reader = new FileReader();
reader.onloadend = (function(Thefile) {
$.ajax({
url: url,
processData:false,
//contentType:"application/octet-stream; charset=UTF-8",
data: file.result,
type: 'PUT',
success : function(){console.log("OK!");},
error : function(){console.log("Not OK!");}
});
})(file);
reader.readAsBinaryString(file);
Run Code Online (Sandbox Code Playgroud)
大多数(全部?)浏览器在通过XMLHttpRequest. 当您将文件作为二进制字符串读取时,您会得到准确的结果:一个 JavaScript 字符串对象,其中每个字符都是 0 到 255 之间的值。
要强制AJAX请求发送二进制编码数据,该数据参数必须是一个ArrayBuffer,File或Blob对象。
如果在发送之前需要访问文件的内容,可以ArrayBuffer使用以下代码将二进制字符串转换为:
var arrBuff = new ArrayBuffer(file.result.length);
var writer = new Uint8Array(arrBuff);
for (var i = 0, len = file.result.length; i < len; i++) {
writer[i] = file.result.charCodeAt(i);
}
Run Code Online (Sandbox Code Playgroud)
您可以将arrBuff实例传递给 AJAX 函数。否则,您应该能够将File对象本身传递给 AJAX 函数,而无需使用所有FileReader代码。
| 归档时间: |
|
| 查看次数: |
10040 次 |
| 最近记录: |