Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah saya boleh memuat turun fail PDF dengan pasti daripada respons perkhidmatan web merentas penyemak imbas yang berbeza menggunakan JavaScript?

Bagaimanakah saya boleh memuat turun fail PDF dengan pasti daripada respons perkhidmatan web merentas penyemak imbas yang berbeza menggunakan JavaScript?

Patricia Arquette
Patricia Arquetteasal
2024-10-28 03:14:30588semak imbas

How can I reliably download a PDF file from a web service response across different browsers using JavaScript?

Membina Dokumen PDF daripada Respons Perkhidmatan Web dalam JavaScript

Membina dokumen PDF daripada rentetan binari yang dikembalikan oleh perkhidmatan web memberikan cabaran merentas pelayar. Kaedah data-uri, walaupun berkesan dalam penyemak imbas tertentu seperti Chrome dan Opera, gagal dalam IE9 dan Firefox.

Pendekatan Alternatif: Muat Turun Fail Sebelah Pelanggan

Kepada mengatasi batasan ini, pendekatan alternatif melibatkan mencipta fail PDF pada sistem fail untuk muat turun pengguna. Untuk mencapai ini, pertimbangkan perkara berikut:

Menetapkan Jenis Respons kepada Gumpalan

Konfigurasikan sifat responseType objek XMLHttpRequest kepada "gumpalan" dan bukannya "teks". Ini membolehkan pelanggan menerima data PDF sebagai objek Blob.

Menggunakan Objek Blob

Buat objek Blob baharu menggunakan respons yang diperoleh daripada permintaan perkhidmatan web .

Menjana URL Objek

Jana URL objek untuk objek Blob, yang mewakili fail PDF.

Membuat Muat Turun Pautan

Buat elemen HTML dan tetapkan atribut href dan muat turunnya. Atribut href hendaklah menghala ke URL objek, manakala atribut muat turun menentukan nama fail.

Mencetuskan Muat Turun

Tambahkan elemen pada badan dokumen dan klik padanya untuk memulakan muat turun fail.

Kod Contoh

Kod JavaScript berikut menunjukkan pendekatan ini:

<code class="javascript">var request = new XMLHttpRequest();
request.open("GET", "/path/to/pdf", true);
request.responseType = "blob";
request.onload = function (e) {
    if (this.status === 200) {
        // Generate .pdf name as `Blob` from `this.response`
        var file = window.URL.createObjectURL(this.response);
        var a = document.createElement("a");
        a.href = file;
        a.download = this.response.name || "detailPDF";
        document.body.appendChild(a);
        a.click();
        // Remove `a` after `Save As` dialog
        window.onfocus = function () {
            document.body.removeChild(a);
        };
    };
};
request.send();</code>

Kaedah ini memastikan muat turun fail yang boleh dipercayai merentas berbilang penyemak imbas, termasuk IE9, Firefox, Chrome, Opera dan Safari.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memuat turun fail PDF dengan pasti daripada respons perkhidmatan web merentas penyemak imbas yang berbeza menggunakan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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