1

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

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

我正在考虑将字节数组写入响应并设置标题。

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

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

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

如果您使用 Fiddler 检查它,您将看到 pdf 是如何以二进制形式接收的。

4

2 回答 2

1

您可以将其设置responseTypearraybuffer并以这种方式访问​​它。甚至还有一种使用 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]那么这是一个不同的问题。

于 2013-03-22T23:07:37.587 回答
0

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

于 2013-03-22T22:28:23.567 回答