Php unduh file alih-alih membuka di browser

Sebelumnya telah disebutkan bahwa file zip dan exe diunduh secara otomatis, tanpa menggunakan skrip PHP. Pertama, buat file HTML dengan kode berikut. Di sini, empat elemen jangkar ditentukan untuk mengunduh empat jenis file. Jenis file ini termasuk file TEXT, ZIP, PDF, dan JPG

Unduh. html

< html >
< kepala >
< judul > Unduh File < /title>
< /kepala >
< tubuh >
< p >< a href="abc.txt" > Unduh file TEXT < /a></p>
< p >< a href="horizon.zip" > Unduh file ZIP < /a></p>
< p >< a href="lecture.pdf" > Unduh file PDF < /a></p>
< p >< a href="rose.jpg" > Unduh file JPG < /a></p>
< /tubuh >
< /html >

Keluaran
Kotak dialog berikut akan muncul untuk mengunduh file setelah mengklik tautan file zip. Pengguna kemudian dapat mengunduh file atau membuka file di pengelola arsip

Php unduh file alih-alih membuka di browser

Jika Anda mengklik file gambar, gambar akan dibuka secara otomatis di browser, seperti yang ditunjukkan pada output berikut. Anda harus menyimpan file untuk membuat salinan file gambar di drive lokal. Dengan cara yang sama, ketika Anda mengklik tautan file PDF dan TEXT, konten file akan dibuka di browser tanpa mengunduh file. Solusi untuk masalah ini adalah mengunduh file secara paksa menggunakan fungsi readfile() PHP bawaan

Php unduh file alih-alih membuka di browser

Unduh File Menggunakan fungsi readfile()

Fungsi readfile() digunakan dalam skrip PHP untuk mengunduh paksa file apa pun dari lokasi saat ini, atau file dengan jalur file. Sintaks fungsi ini diberikan di bawah ini

Sintaksis
int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

Fungsi ini dapat mengambil tiga argumen. Argumen pertama bersifat wajib, dan dua argumen lainnya bersifat opsional. Argumen pertama, $filename, menyimpan nama file atau nama file dengan path yang akan diunduh. Nilai default parameter kedua, $use_include_path, adalah false dan akan disetel ke true jika nama file dengan path digunakan di argumen pertama. Argumen ketiga, $context, digunakan untuk menunjukkan sumber aliran konteks. Fungsi ini mengembalikan jumlah byte yang dibaca dari file yang disebutkan dalam argumen pertama. Penggunaan fungsi ini ditunjukkan dalam dua contoh berikut

Contoh 1. Unduh File dengan Nama File

Dalam contoh ini, kita akan membuat file HTML dengan kode berikut, dimana nama file akan diteruskan sebagai parameter URL bernama path, dan nilai parameter ini akan diteruskan ke file PHP bernama download. php

unduh2. html

< html >
< kepala >
< judul >Unduh File< /judul<>
< /kepala >
< tubuh >
< p >< a href="download.php?path=abc.txt" >Unduh TEXT file< /a></p>
< p >< a href="download.php?path=horizon.zip" >Unduh file ZIP< /a >< /p>
< p >< a href="download.php?path=lecture.pdf" >Unduh file PDF< /a >< /p>
< p >< a href="download.php?path=rose.jpg" >Unduh file JPG< /a >< /p>
< /tubuh >
< /html >

Kami akan membuat file PHP dengan kode berikut untuk mengunduh file secara paksa. Di sini, fungsi isset() digunakan untuk memeriksa apakah $_GET[‘path’] sudah ditentukan. Jika variabel ditentukan, fungsi file_exists() digunakan untuk memeriksa apakah file ada di server. Selanjutnya, fungsi header() digunakan untuk mengatur informasi header yang diperlukan sebelum menggunakan fungsi readfile(). Fungsi basename() digunakan untuk mengambil nama file, dan fungsi filesize() digunakan untuk membaca ukuran file dalam byte, yang akan ditampilkan di kotak dialog pembuka untuk mengunduh file. Fungsi flush() digunakan untuk menghapus buffer keluaran. Fungsi readfile() digunakan dengan nama file saja, di sini

unduh. php



jika(disetel($_GET['path']))
{
//Baca nama file
$filename = $_GET['path'];
//Periksa file ada atau tidak
jika(file_ada($namafile)) {

//Menentukan informasi tajuk
tajuk('Deskripsi-Konten. Transfer Berkas');
tajuk('Tipe-Konten. application/octet-stream');
tajuk("Kontrol-Cache. tanpa cache, harus divalidasi ulang");
header("Berakhir. 0");
tajuk('Disposisi Konten. lampiran; . .namadasar($namafile). '"'');
tajuk('Panjang Konten. ' . ukuran file($namafile));
tajuk('Pragma. publik');

// Hapus buffer keluaran sistem
siram();

// Baca ukuran file
readfile($namafile);

// Hentikan dari skrip
mati();
}
else{
echo "File tidak ada. ";
}
}
kalau tidak
echo "Nama file tidak ditentukan. "
?>

Keluaran
Output berikut akan muncul setelah mengklik tautan unduhan file gambar. Ukuran file mawar. gambar jpg adalah 27. 2 KB, seperti yang ditunjukkan pada kotak dialog. Anda dapat mendownload file dengan memilih tombol radio Save File dan menekan tombol OK

Php unduh file alih-alih membuka di browser

Contoh 2. Unduh File dengan File Path

Jika file ada di lokasi file yang diberikan, jalur file harus disebutkan di URL. Dalam contoh ini, kita akan membuat file HTML dengan kode berikut, yang akan meneruskan nama file dengan path file

unduh3. html

< html >
< kepala >
< judul > Unduh File < /title>
< /kepala >
< tubuh >
< p >< a href="download.php?path=downloads/lecture.pdf" > Unduh file PDF < /a></p>
< p >< a href="download2.php?path=downloads/rose.jpg" > Unduh file JPG < /a></p>
< /tubuh >
< /html >

Kami akan membuat file PHP dengan kode berikut untuk mengunduh file dari jalur file. Kode PHP pada contoh sebelumnya akan sedikit dimodifikasi untuk mengunduh file dari jalur yang diberikan. Fungsi clearstatecache() digunakan untuk menghapus cache yang sebelumnya disimpan. Dua argumen digunakan dalam fungsi readfile()

unduh2. php


jika(disetel($_GET['path']))
{
//Baca url
$url = $_GET['jalur'];

//Hapus cache
hapus cachestat();

// Periksa jalur file ada atau tidak
jika(file_ada($url)) {

//Menentukan informasi tajuk
tajuk('Deskripsi-Konten. Transfer Berkas');
tajuk('Tipe-Konten. application/octet-stream');
tajuk('Disposisi Konten. lampiran; . .nama dasar($url). '"'');
tajuk('Panjang Konten. ' . ukuran file($url));
tajuk('Pragma. publik');

// Hapus buffer keluaran sistem
siram();

// Baca ukuran file
readfile($url,benar);

// Hentikan dari skrip
mati();
}
else{
echo "Jalur file tidak ada. ";
}
}
echo "Jalur file tidak ditentukan. "

?>

Keluaran
Setelah tautan unduhan file PDF diklik, output berikut akan muncul

Php unduh file alih-alih membuka di browser

Video tutorial

Kesimpulan

Artikel ini memberikan cara sederhana untuk mengunduh paksa file apa pun menggunakan skrip PHP, untuk membantu pembaca menambahkan fitur unduhan dalam skrip mereka

Mengapa file PHP saya mengunduh alih-alih mengeksekusi?

Ini biasanya karena kode penangan yang tidak tepat . Dalam. htaccess, Anda ingin memastikan kode penangan cocok dengan versi php Anda. Jika tidak, file php mungkin mencoba mengunduh alih-alih memproses.

Bagaimana cara memaksa file untuk diunduh alih-alih dibuka di browser?

Di sebagian besar browser, mengeklik tautan akan membuka file langsung di browser. Namun, jika Anda menambahkan atribut unduhan ke tautan , itu akan memberi tahu browser untuk mengunduh file sebagai gantinya. Atribut unduhan berfungsi di semua browser modern, termasuk MS Edge, tetapi tidak untuk Internet Explorer.

Mengapa situs web saya mengunduh alih-alih dibuka?

Hal ini terjadi ketika. file htaccess untuk situs web Anda berisi baris AddHandler yang tidak valid . Untuk mengatasi masalah, cari. htaccess untuk situs web Anda, buka file untuk diedit, cari baris atau baris yang dimulai dengan AddHandler, hapus dan simpan perubahannya.

Bagaimana cara mengunduh file alih-alih membukanya?

Unduh file .
Kebanyakan file. Klik tautan unduhan. Atau, klik kanan pada file tersebut dan pilih Simpan sebagai
Gambar-gambar. Klik kanan pada gambar dan pilih Save Image As
Video. Arahkan ke video. Klik Unduh. .
PDF. Klik kanan pada file tersebut dan pilih Simpan Tautan Sebagai
Halaman web. Di kanan atas, klik Lainnya. Lebih Banyak Alat