Jquery, PHP를 이용한 Ajax 파일 다운로드
사용자가 (ajax 및 $_GET을 사용하여) 전송된 $_GET 변수를 처리하고 다운로드를 위해 올바른 파일에 액세스하는 다운로드 링크를 클릭하는 ajax 기능을 사용하고 싶습니다.
$_GET 변수 처리를 처리하기 위한 PHP 스크립트가 몇 개 있는데, 이 스크립트는 자체적으로 작동하지만 Ajax를 사용하여 액세스하면 작동이 중단됩니다.
사용 중인 Ajax/PHP 코드는 다음과 같습니다.
function ajaxDown(){
$('#downloadmsg').html(
'<img src=\"media/images/ajaxloader.gif\" width=\"128\" height=\"15\">');
$('#downloadmsg').load(
'media/downloads/downManager.php?file=".$filequery['filename']."&ftype=".$downex[1]."');
}
제 코드를 살펴보고 제가 무엇을 잘못하고 있는지 찾을 수 있도록 도와주세요.
고맙습니다
문제는 파일 결과를 #downloadmsg에 로드하려고 하는 것 같은데, .load()는 HTML로만 결과를 로드하기 때문에 작동하지 않을 것입니다...이진 데이터 또는 기타 인코딩이 아닙니다.
HTML에 숨겨진 iframe을 만드는 방법은 다음과 같습니다.
<iframe id="secretIFrame" src="" style="display:none; visibility:hidden;"></iframe>
그런 다음 iframe의 특성을 쿼리 문자열에 설정합니다.
$("#secretIFrame").attr("src","myphpscript.php?option1=apple&option2=orange");
소스가 설정되어 있을 때 PHP 헤더를 사용하여 강제 다운로드를 수행합니다(다음은 옥텟 스트림을 사용하는 스크립트 중 하나에서 설정된 내보내기 헤더의 예입니다).
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=data.xls ");
header("Content-Transfer-Encoding: binary ");
도움이 되길 바랍니다!
늦었다는 거 알아요!하지만 숨겨진 iframe을 사용하지 않고도 좀 더 깔끔한 솔루션이 있다고 생각합니다. 그리고 그것을 수행하기 위해 ajax 요청도 필요 없을 것입니다!다운로드에서 수락된 답변에 명시된 대로 PHP 헤더를 사용합니다.php 파일
<?php
//download.php
/*
All your verification code will go here
*/
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=".$_GET['file']);
header("Content-Transfer-Encoding: binary ");
그리고 JS 쪽에서는, 간단히.
function download(filename){
window.location="http://whateveryoursiteis.com/download.php?file="+filename;
}
매력적으로 작동합니다 :O
언급URL : https://stackoverflow.com/questions/3599670/ajax-file-download-using-jquery-php
'programing' 카테고리의 다른 글
PHP 7로 mbstring을 초기화할 수 없음 (0) | 2023.09.13 |
---|---|
CSS 전용 조적 배치 (0) | 2023.09.13 |
batis 컬렉션 열의 매개 변수에 문자열만 전달하려면 어떻게 해야 합니까? (0) | 2023.09.13 |
SQL 2008에서 테이블을 삭제하지 않고 열을 변경하는 방법 (0) | 2023.09.13 |
SQL은 특정 레코드가 맨 위에 하나 있고, 다른 레코드는 아래에 모두 있습니다. (0) | 2023.09.13 |