使用jQuery AJAX下载二进制文件

我正在尝试使用jQuery AJAX下载二进制音频文件。

通常我只会发出这样的命令:

 windows.location.href = 'http://marksdomain(dot)com/audioFile.wav' ;

但是,最近我们的服务器等待时间太长,无法响应,并且我收到了令人讨厌的网关超时消息。

有人建议我改用jQuery AJAX,从那时起我就可以更好地控制超时了。

这是到目前为止我玩过的代码:

$.ajax({

url: 'http://marksdomain(dot)com/audioFile.wav',

timeout: 999999,

dataType: 'binary',

processData: false, // this one does not seem to do anything ?

success: function (result) {

console.log(result.length);

},

error: function (result, errStatus, errorMessage) {

console.log(errStatus + ' -- ' + errorMessage);

}

};

当我省略“ dataType”时,二进制文件的传输量大约是服务器上实际文件传输量的三倍。但是,当我使dataType等于“

binary”时,AJAX会引发错误:

"No conversion from text to binary"

从以前的一些帖子中,听起来好像jQuery AJAX无法以这种方式处理二进制文件。

我确实发现了Delivery.js,它实际上可以很好地满足我的尝试,但是我宁愿不使用节点解决方案。

有什么建议?

回答:

只需直接使用XHR。这个例子取自MDN:

var oReq = new XMLHttpRequest();

oReq.open("GET", "/myfile.png", true);

oReq.responseType = "arraybuffer";

oReq.onload = function(oEvent) {

var arrayBuffer = oReq.response;

// if you want to access the bytes:

var byteArray = new Uint8Array(arrayBuffer);

// ...

// If you want to use the image in your DOM:

var blob = new Blob([arrayBuffer], {type: "image/png"});

var url = URL.createObjectURL(blob);

someImageElement.src = url;

// whatever...

};

oReq.send();

以上是 使用jQuery AJAX下载二进制文件 的全部内容, 来源链接: utcz.com/qa/429449.html

回到顶部