使用来自bytearray的Javascript下载文件

时间:2013-03-22 22:07:38

标签: javascript jquery file

我的asp网络应用程序中有一个按钮,按下时我正在调用一个返回bytearray的休息服务。

这个bytearray实际上是一个文件,当按下按钮时我需要在浏览器中开始下载。我怎样才能做到这一点?

我正在考虑将bytearray写入响应并设置标头。

这种想法是否正确,是否有人拥有一些代码示例?

--------- 3/25更新---------------- 谢谢贾斯汀,但还不是我需要的东西。请查看此链接,它将返回一个文件供下载。我需要做的是有一个事件客户端,可以下载此文件而无需重定向到此页面。它必须从我的页面下载而不是此链接。

http://ops.epo.org/3.0/rest-services/published-data/images/US/5000001/PA/firstpage.pdf?Range=1

如果你用Fiddler查看,你会看到pdf是如何以二进制形式收到的。

2 个答案:

答案 0 :(得分:1)

您可以将responseType设置为 arraybuffer 并以此方式访问它。甚至有一种方法可以使用onprogress事件来传输数据。 JavaScript已经走过了漫长的道路。

var oReq = new XMLHttpRequest();
oReq.open("GET", "/myfile.png", true);
oReq.responseType = "arraybuffer";

oReq.onload = function (oEvent) {
  var arrayBuffer = oReq.response; // Note: not oReq.responseText
  if (arrayBuffer) {
    var byteArray = new Uint8Array(arrayBuffer);
    for (var i = 0; i < byteArray.byteLength; i++) {
      // do something with each byte in the array
    }
  }
};

oReq.send(null);

https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Sending_and_Receiving_Binary_Data

如果您的意思是Web服务没有返回二进制数据,而是JSON数据,例如:[0,1,3,4]那么这是一个不同的问题。

答案 1 :(得分:0)

据我所知,你可以用javascript做的最接近的事是一个ajax请求,让服务器将数据解析为文本