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

Patricia Arquette
Lepaskan: 2024-10-28 03:14:30
asal
580 orang telah melayarinya

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

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!

sumber:php.cn
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!