2013-03-22 128 views
1

我有一个按钮在我的asp网络应用程序,当按下时,我打电话给一个休息服务,返回一个bytearray。使用Javascript从bytearray下载文件

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

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

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

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

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

如果你看看与提琴手,你会看到PDF的效果如何为二进制。

回答

0

据我所知,你可以用JavaScript做的最接近的是,有服务器解析的数据作为文本

1

您可以设置responseTypearraybuffer和访问它的方式Ajax请求。甚至有一种使用进展事件来流式传输数据的方法。 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]那么这是一个不同的问题。