通常我会发出这样的命令:
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();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。