javascript – 使用jquery ajax下载二进制文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 使用jquery ajax下载二进制文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1436字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 使用jquery ajax下载二进制文件](/upload/InfoBanner/zyjiaocheng/708/34a1f87f4de5444eaa0b74ce36b7fb2b.jpg)
我试图使用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();
内容总结
以上是互联网集市为您收集整理的javascript – 使用jquery ajax下载二进制文件全部内容,希望文章能够帮你解决javascript – 使用jquery ajax下载二进制文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。