Saya memberikan tautan file pdf di halaman web saya untuk diunduh, seperti di bawah ini
<a href="myfile.pdf">Download Brochure</a>
Masalahnya adalah ketika pengguna mengklik tautan ini
- Jika pengguna telah menginstal Adobe Acrobat, maka itu membuka file di jendela browser yang sama di Adobe Reader.
- Jika Adobe Acrobat tidak diinstal maka itu akan muncul ke pengguna untuk Mengunduh file.
Tapi saya ingin itu selalu pop-up kepada pengguna untuk diunduh, terlepas dari "Adobe acrobat" diinstal atau tidak.
Tolong beritahu saya bagaimana saya bisa melakukan ini?
"Content-type: application/force-download"
tidak terdaftar di mana pun di sini: iana.org/assignments/media-types/application Ini adalah header yang sepenuhnya palsu. Harap jangan membuat header dan mengirimkannya. Bisakah Anda memperbarui jawaban Anda. Terima kasih.fopen
.Ini adalah masalah umum tetapi hanya sedikit orang yang tahu bahwa ada solusi HTML 5 sederhana:
Di mana
newfilename
nama file yang disarankan bagi pengguna untuk menyimpan file. Atau akan default ke nama file di sisi server jika Anda membiarkannya kosong, seperti ini:Kompatibilitas: Saya menguji ini di Firefox 21 dan Iron, keduanya berfungsi dengan baik. Ini mungkin tidak berfungsi pada browser yang tidak kompatibel dengan HTML5 atau sudah usang. Satu-satunya browser yang saya uji yang tidak memaksa unduhan adalah IE ...
Periksa kompatibilitas di sini: http://caniuse.com/#feat=download
sumber
Jangan mengulang setiap baris file. Gunakan readfile sebagai gantinya, lebih cepat. Ini dari situs php: http://php.net/manual/en/function.readfile.php
Pastikan untuk membersihkan variabel get Anda karena seseorang dapat mengunduh beberapa file php ...
sumber
Alih-alih menggunakan skrip PHP, untuk membaca dan membersihkan file, lebih baik menulis ulang header menggunakan
.htaccess
. Ini akan membuat URL "bagus" (myfile.pdf
bukandownload.php?myfile
).sumber
^\.pdf$
ekspresi reguler.Saya menemukan cara untuk melakukannya dengan HTML lama biasa dan JavaScript / jQuery yang terdegradasi dengan baik. Diuji di IE7-10, Safari, Chrome, dan FF:
HTML untuk tautan unduhan:
jQuery (kode JavaScript murni akan lebih bertele-tele) yang mensimulasikan mengklik tautan setelah sedikit penundaan:
Untuk membuatnya lebih kuat Anda bisa menambahkan deteksi fitur HTML5 dan jika tidak ada maka gunakan
window.open()
untuk membuka jendela baru dengan file tersebut.sumber
Inilah kuncinya:
Aplikasi tipe konten / x-pdf-document atau application / pdf dikirim saat mengirim file PDF. Adobe Reader biasanya menyetel penangan untuk jenis MIME ini sehingga browser akan meneruskan dokumen ke Adobe Reader ketika salah satu jenis PDF MIME diterima.
sumber
Saya tahu saya sangat terlambat untuk menjawab ini tetapi saya menemukan sebuah hack untuk melakukan ini dalam javascript.
sumber
Coba ini:
<a href="pdf_server_with_path.php?file=pdffilename&path=http://myurl.com/mypath/">Download my eBook</a>
Kode di dalam pdf_server_with_path.php adalah:
sumber
Inilah pendekatan yang berbeda. Saya lebih suka daripada mengandalkan dukungan browser, atau mengatasinya di lapisan aplikasi, untuk menggunakan logika server web.
Jika Anda menggunakan Apache, dan dapat meletakkan file .htaccess di direktori yang relevan, Anda dapat menggunakan kode di bawah ini. Tentu saja, Anda dapat meletakkan ini di httpd.conf juga, jika Anda memiliki akses ke sana.
Direktif FilesMatch hanyalah sebuah regex sehingga dapat disetel sedetail yang Anda inginkan, atau Anda dapat menambahkan ekstensi lain.
Baris Header melakukan hal yang sama seperti baris pertama pada skrip PHP di atas. Jika Anda perlu mengatur baris Content-Type juga, Anda dapat melakukannya dengan cara yang sama, tetapi saya tidak merasa itu perlu.
sumber
Saya menyelesaikan milik saya menggunakan seluruh url file PDF (Alih-alih hanya meletakkan nama file atau lokasi ke href): a href = "domain. Com / pdf / filename.pdf"
sumber
jika Anda perlu membatasi kecepatan unduhan, gunakan kode ini !!
Untuk informasi lebih lanjut klik disini
sumber
sumber
Dalam aplikasi Ruby on Rails (terutama dengan sesuatu seperti Prawn gem dan plugin Prawnto Rails), Anda dapat melakukannya sedikit lebih sederhana daripada full on script (seperti contoh PHP sebelumnya).
Di pengontrol Anda:
Bagian render: layout => false memberi tahu browser untuk membuka "Apakah Anda ingin mengunduh file ini?" meminta alih-alih mencoba merender PDF. Kemudian Anda dapat menautkan ke file tersebut secara normal: http://mysite.com/myawesomepdf.pdf
sumber