我的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是如何以二进制形式收到的。
答案 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请求,让服务器将数据解析为文本