我需要使用ajax将文件二进制文件发送到.ashx文件(c#.net环境)。 当我发送它时,“请求有效载荷”必须是Content-Type:“application / octet-stream”,这是服务器端的要求。我的问题是当我运行我的脚本时,它将文件作为普通类型而不是“application / octet-stream”发送。如果文件是jpg,那么它将它作为内容类型发送:“image / jpeg”,这对我不利。我想以二进制格式发送文件。
现在我拥有的是:
var formData = new FormData();
formData.append('file',file);
$.ajax({
url: gatewayUrl,
type: "POST",
data: formData,
processData: false,
contentType: false,
success: function(data){},
error: function(){}
});
我读到了关于FileReader和File.getAsBinary()的内容,但是没有它们正在为我工作。我正在与ArrayBuffer挣扎,我不确定我是否正确的方向..
这是我正在考虑的方向,但我无法弄清楚这是否是正确的方式:
function get_file_binary(file){
var fileReader = new FileReader();
fileReader.readAsArrayBuffer(file);
fileReader.onload = function(e){
var res = fileReader.result;
var res2 = new Int8Array(res);
return res2;
}
}
但是当我尝试这个时,我在chrome上的“Request Payload”中得到“undefined”。