2013-06-04 2 views
0

UI로 렌더링되는 클라이언트 측에 JSON 배열이 있습니다. 사용자가 파일로 내용을 다운로드하려고합니다. 어떻게하면 클라이언트 측에서 서버로 컨텐츠를 보내고 파일로 다운로드 할 수 있습니까?Javascript를 사용하여 fie 다운로드

POST Ajax 요청으로 인해 파일을 다운로드 할 수없는 것으로 나타났습니다. 어떻게 할 수 있습니까?

+0

관련 항목 : http://stackoverflow.com/questions/566922/how-do-i-download-javascript-string-as-a-file?rq=1 –

+0

JASON을 서버에서 개별 파일로 액세스 할 수 있습니까? ? URL이 있습니까? – HBP

+0

* JavaScript를 사용하여 파일을 다운로드하고 싶습니까? 아니면 브라우저가 리소스를 탐색 할 때 리소스를 표시하는 대신 단순히 리소스를 다운로드하도록 브라우저를 강요하면 만족할 수 있습니까? – apsillers

답변

1

콘텐츠가 클라이언트에서 사용 가능한 인 경우 서버로 보내야합니다. 이런 식으로 뭔가를 시도 :

// Use equivalent in your server side script if not using PHP 
$filename = 'download-'.time().'.json'; 
header('Content-Type: application/octet-stream'); 
header('Content-Transfer-Encoding: Binary'); 
header('Content-disposition: attachment; filename="'.$filename.'"'); 
exit($_GET['json']); 

이 사용 :

<a id="download_link">Download</a> 
$('#download_link').on('click', function(e){ 
    e.preventDefault(); 
    window.location = 'my-handler.php?json=' + myJsonString; 
}); 
// or without jQuery 
document.getElementById('download_link').onclick = function(){ 
    window.location = 'my-handler.php?json=' + myJsonString; 
}; 

그런 다음 파일 내용으로 서버에 전송 된 데이터를 사용하여, my-handler.php에서 다운로드를 강제로 메서드를 사용하면 현재 창을 바꾸지 않고 다운로드 프롬프트가 시작되지만 i를 열 수 있습니다. 새 창. 원한다면.

이것은 빠르고 더러운 솔루션입니다. 이것은 사람이 무엇이든 입력하고 파일을 다운로드 할 수있게합니다. 콘텐츠를 먼저 확인하는 것이 현명한 방법 일 수 있습니다. 또한 콘텐츠가 너무 큰 문제가있을 수 있습니다.

+0

그것이 작동해야하지만, 나는 이것이 나쁜 해결책이 될 수 있다고 생각하지만, 너무 복잡하지 않고 좋은 대안을 상상할 수는 없습니다. 코멘트를 기대합니다. –

관련 문제