Rumah > Soal Jawab > teks badan
P粉0717437322023-08-17 12:50:47
Pelanjutan fail sebenarnya tidak ada kaitan dengan ini... Content-Type
Pengepalanya.
Berdasarkan penerangan anda, saya rasa apabila mendapatkan fail PDF, pelayan tidak menggunakan jenis yang betul dalam respons, sebaliknya menghantarnya sebagai application/octet-stream
atau jenis lain. (Ini adalah jenis biasa dan pelayar memuat turunnya secara lalai.)
Terdapat beberapa cara untuk menyelesaikan masalah ini. Salah satu cara ialah menggunakan ServiceWorker untuk mengatasi Content-Type
pengepala seperti yang diperlukan. Walau bagaimanapun, ini tidak selalu berfungsi. Penyemak imbas sering melumpuhkan pekerja perkhidmatan apabila halaman terpaksa dimuat semula atau apabila mod privasi didayakan.
Satu lagi pendekatan yang lebih dekat dengan apa yang anda cadangkan ialah mendapatkan PDF dalam ingatan dalam JavaScript. Anda boleh melakukan ini menggunakan API Ambil, kemudian buat URL Blob dan biarkan penyemak imbas memuat turunnya. Belum diuji lagi, tetapi inilah intipatinya:
const res = await fetch('https://example.com/doc.pdf.fake-ext'); if (!res.ok) { throw new Error(`${res.status} ${res.statusText}`); } const blob = await res.blob(); const blobUrl = URL.createObjectURL(blob); // 现在,您可以直接链接或重定向到`blobUrl`。 // 完成后一定要释放它,使用URL.revokeObjectURL()。
Sila ambil perhatian bahawa ini mungkin tidak berfungsi untuk dokumen yang sangat besar. Dokumen kecil tiada masalah.
Juga ambil perhatian bahawa tidak semua penyemak imbas boleh memaparkan PDF, dan tidak semua sistem dikonfigurasikan untuk membenarkan penyemak imbas memaparkan PDF sendiri.