>  기사  >  웹 프론트엔드  >  PHP에서 AJAX를 통해 CSV 파일을 강제 다운로드하는 방법은 무엇입니까?

PHP에서 AJAX를 통해 CSV 파일을 강제 다운로드하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-24 08:37:01224검색

How to Force-Download a CSV File Through AJAX in PHP?

PHP 및 AJAX를 사용하여 파일 다운로드

질문:

AJAX를 통해 CSV 파일을 강제 다운로드하려면 어떻게 해야 하나요? PHP를 호출하시겠습니까?

배경:

사용자 입력을 기반으로 CSV 파일을 생성하는 AJAX 함수를 생성했습니다. 생성 후 사용자에게 메시지를 표시하지 않고 파일을 자동으로 다운로드하려고 합니다.

PHP 코드:

PHP 파일(csv.php)에서 다음을 시도했습니다. 다음 스크립트를 사용하여 CSV 파일을 강제로 다운로드합니다.

<code class="php">$fileName = 'file.csv';
$downloadFileName = 'newfile.csv';

if (file_exists($fileName)) {
    header('Content-Description: File Transfer');
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename='.$downloadFileName);
    ob_clean();
    flush();
    readfile($fileName);
    exit;
}
echo "done";</code>

문제:

csv.php 끝에서 이 스크립트를 실행하면 파일이 다운로드되지 않고 페이지에 표시됩니다.

해결 방법:

AJAX를 사용하여 파일을 직접 다운로드할 수 없습니다. 파일을 강제로 다운로드하려면 다음 방법 중 하나를 사용할 수 있습니다.

  • 새 창 팝업: 다운로드 링크를 주소로 사용하여 새 창을 만듭니다.
  • document.location = ...: 문서의 현재 위치를 다운로드 링크로 설정하려면 document.location = ... 속성을 사용하세요.

예:

AJAX 기능을 다음과 같이 수정하여 다운로드 링크가 포함된 새 창을 표시할 수 있습니다.

<code class="javascript">function csv() {

    ajaxRequest = ajax();

    postdata = "data=" + document.getElementById("id").value;

    ajaxRequest.onreadystatechange = function () {
        var ajaxDisplay = document.getElementById('ajaxDiv');
        if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) {
            window.open(ajaxRequest.responseText);  // Pop up a new window with the download link
        }
    }

    ajaxRequest.open("POST", "csv.php", false);
    ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    ajaxRequest.send(postdata);
}</code>

위 내용은 PHP에서 AJAX를 통해 CSV 파일을 강제 다운로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.