AJAX 요청으로 파일 다운로드: 종합 가이드
문제: "ajax 다운로드 요청" 시작 시도 버튼을 클릭해도 원하는 결과가 나오지 않습니다. 아래에는 JavaScript 및 PHP 데모가 제공됩니다.
JavaScript:
var xhr = new XMLHttpRequest(); xhr.open("GET", "download.php"); xhr.send();
PHP(download.php):
<? header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename= file.txt"); header("Content-Transfer-Encoding: binary"); readfile("file.txt"); ?>
위 코드가 예상대로 작동하지 않습니다. 이 문제를 해결하는 데 필요한 단계에 대한 통찰력을 제공할 수 있습니까?
해결책:
AJAX 요청을 통해 파일 다운로드를 시작하는 것은 불가능합니다. 이 작업을 위해서는 파일에 직접 액세스해야 합니다.
업데이트된 솔루션(2015년 4월 27일):
'다운로드' 속성 사용:
JavaScript:
// Check if 'download' is supported if ('download' in HTMLAnchorElement.prototype) { // Create an anchor element var anchor = document.createElement('a'); // Set 'download' attribute and file URL anchor.download = 'file.txt'; anchor.href = 'download.php'; // Trigger file download anchor.click(); } else { // Fallback to previous method window.location = 'download.php'; }
원래 솔루션:
사용 'window.location':
JavaScript :
$.ajax({ url: 'download.php', type: 'POST', success: function() { window.location = 'download.php'; } });
단순화를 위해 AJAX를 사용하지 않는 것이 좋습니다. 모두 요청하고 'window.location'을 사용하면 됩니다.
위 내용은 AJAX가 파일 다운로드에 작동하지 않는 이유는 무엇이며 최선의 대안은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!