Bagaimana Memaksa-Muat Turun Fail CSV Melalui AJAX dalam PHP?

Susan Sarandon
Lepaskan: 2024-10-24 08:37:01
asal
223 orang telah melayarinya

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

Memuat turun Fail dengan PHP dan AJAX

Soalan:

Bagaimana saya boleh memuat turun paksa fail CSV melalui AJAX panggil dalam PHP?

Latar Belakang:

Anda telah mencipta fungsi AJAX yang menjana fail CSV berdasarkan input pengguna. Selepas penciptaan, anda ingin memuat turun fail secara automatik tanpa menggesa pengguna.

Kod PHP:

Dalam fail PHP anda (csv.php), anda telah cuba untuk gunakan skrip berikut untuk memuat turun paksa fail 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>
Salin selepas log masuk

Isu:

Apabila anda menjalankan skrip ini pada penghujung csv.php, kandungan fail dipaparkan pada halaman dan bukannya dimuat turun.

Penyelesaian:

AJAX tidak boleh digunakan untuk memuat turun terus fail. Untuk memuat turun fail secara paksa, anda boleh menggunakan salah satu kaedah berikut:

  • Timbul tetingkap baharu: Cipta tetingkap baharu dengan pautan muat turun sebagai alamatnya.
  • document.location = ...: Gunakan document.location = ... harta untuk menetapkan lokasi semasa dokumen kepada pautan muat turun.

Contoh:

Anda boleh mengubah suai fungsi AJAX anda seperti berikut untuk muncul tetingkap baharu dengan pautan muat turun:

<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>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana Memaksa-Muat Turun Fail CSV Melalui AJAX dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!