2013-03-22 4 views
1

나는 asp net 앱에 버튼이 있습니다. 눌렀을 때 bytearray를 반환하는 휴식 서비스를 호출합니다.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

는 지금까지 내가 아는 한, 당신은 자바 스크립트로 할 수있는 가장 가까운 것은 서버 당신은 액세스 그런 식으로 arraybuffer responseType을 설정할 수있는 텍스트

1

로 데이터를 구문 분석이 아약스 요청입니다. onprogress 이벤트를 사용하여 데이터를 스트리밍하는 방법조차 있습니다. 자바 스크립트는 먼 길을왔다. [0,1,3,4] 그 다른 문제입니다 :

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

당신은 웹 서비스가 이진 데이터를 반환하지 않는 것을 의미하는 경우

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); 

, 대신 같은 JSON 데이터입니다.