2013-03-22 127 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]那麼這是一個不同的問題。