Cara Mengunduh File di PHP

How Download File Php



Secara umum, tidak diperlukan skrip PHP untuk mengunduh file dengan ekstensi exe dan ritsleting . Jika lokasi file dari jenis file ini diatur di href atribut elemen jangkar, maka file secara otomatis diunduh ketika pengguna mengklik tautan unduhan. Beberapa file, seperti gambar file, PDF file, teks file, CSV file, dll., tidak mengunduh secara otomatis, dan sebagai gantinya, buka di browser ketika pengguna mengklik tautan unduhan. File-file ini dapat diunduh secara paksa di PHP menggunakan file baca() fungsi yang tidak mengunduh secara otomatis. Tutorial ini menunjukkan kepada Anda cara mengunduh file apa pun secara paksa menggunakan skrip PHP.

Periksa Tautan Unduh

Disebutkan sebelumnya bahwa ritsleting dan exe file diunduh secara otomatis, tanpa menggunakan skrip PHP. Pertama, buat file HTML dengan kode berikut. Di sini, empat elemen jangkar didefinisikan untuk mengunduh empat jenis file. Jenis file ini termasuk file TEXT, ZIP, PDF, dan JPG.







Unduh.html



< html >
< kepala >
< judul >Unduh File</ judul >
</ kepala >
< tubuh >
< P >< ke href='abc.txt'>Unduh file TEKS</ ke ></ P >
< P >< ke href='horizon.zip'>Unduh file ZIP</ ke ></ P >
< P >< ke href='kuliah.pdf'>Unduh file PDF</ ke ></ P >
< P >< ke href='mawar.jpg'>Unduh file JPG</ ke ></ 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.




Jika Anda mengklik file gambar, gambar akan terbuka 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 PHP bawaan file baca() fungsi.





Unduh File Menggunakan Fungsi readfile()

NS file baca() fungsi ini digunakan dalam skrip PHP untuk mengunduh secara 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 adalah wajib, dan dua argumen lainnya opsional. Argumen pertama, $nama file , menyimpan nama file atau nama file dengan jalur yang akan diunduh. Nilai default dari parameter kedua, $use_include_path , salah dan akan disetel ke true jika nama file dengan jalur digunakan dalam argumen pertama. Argumen ketiga, $konteks , digunakan untuk menunjukkan sumber daya 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, di mana nama file akan diteruskan sebagai parameter dari URL bernama jalur , dan nilai parameter ini akan diteruskan ke file PHP bernama download.php .

unduh2.html

< html >
< kepala >
< judul >Unduh File</ judul >
</ kepala >
< tubuh >
< P >< ke href='download.php?path=abc.txt'> UnduhTEKSmengajukan</ ke ></ P >
< P >< ke href='download.php?path=horizon.zip'>Unduh file ZIP</ ke ></ P >
< P >< ke href='download.php?path=ceramah.pdf'>Unduh file PDF</ ke ></ P >
< P >< ke href='download.php?path=rose.jpg'>Unduh file JPG</ ke ></ P >
</ tubuh >
</ html >

Kami akan membuat file PHP dengan kode berikut untuk mengunduh file secara paksa. Di sini, hilang) fungsi yang digunakan untuk memeriksa apakah $_GET['jalur'] didefinisikan. Jika variabel didefinisikan, file_ada() fungsi ini digunakan untuk memeriksa apakah file tersebut ada di server. Selanjutnya, kepala() fungsi digunakan untuk mengatur informasi header yang diperlukan sebelum menggunakan file baca() fungsi. NS nama dasar() fungsi digunakan untuk mengambil nama file, dan ukuran file() fungsi digunakan untuk membaca ukuran file dalam byte, yang akan ditampilkan di kotak dialog pembuka untuk mengunduh file. NS menyiram() fungsi ini digunakan untuk menghapus buffer output. NS file baca() fungsi digunakan dengan nama file saja, di sini.

download.php



jika( hilang ($_GET['jalur']))
{
//Baca nama filenya
$nama file = $_GET['jalur'];
//Periksa file ada atau tidak
jika( file_ada ($nama file)) {

//Tentukan informasi header
header ('Deskripsi Konten: Transfer File');
header ('Jenis Konten: aplikasi/aliran oktet');
header ('Kontrol Cache: tanpa cache, harus divalidasi ulang');
header ('Kedaluwarsa: 0');
header ('Konten-Disposisi: lampiran; nama file=''. nama dasar ($nama file).'' ');
header ('Panjang Konten:' . ukuran file ($nama file));
header ('Pragma: publik');

//Hapus buffer keluaran sistem
menyiram ();

//Baca ukuran file
baca file ($nama file);

//Hentikan dari skrip
NS ();
}
lain{
dibuang 'File tidak ada.';
}
}
lain
dibuang 'Nama file tidak ditentukan.'
?>

Keluaran
Output berikut akan muncul setelah mengklik link download file gambar. Ukuran file mawar.jpg gambar adalah 27.2 KB , seperti yang ditunjukkan pada kotak dialog. Anda dapat mengunduh file dengan memilih Menyimpan file tombol radio dan menekan tombol oke tombol.

Contoh 2: Unduh File dengan Jalur File

Jika file ada di lokasi file yang diberikan, jalur file akan diminta untuk disebutkan di URL. Dalam contoh ini, kami akan membuat file HTML dengan kode berikut, yang akan meneruskan nama file dengan jalur file:

unduh3.html

< html >
< kepala >
< judul >Unduh File</ judul >
</ kepala >
< tubuh >
< P >< ke href='download.php?path=downloads/lecture.pdf'>Unduh file PDF</ ke ></ P >
< P >< ke href='download2.php?path=downloads/rose.jpg'>Unduh file JPG</ ke ></ 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. NS hapus cache() fungsi ini digunakan untuk menghapus cache yang sebelumnya disimpan. Dua argumen digunakan dalam file baca() fungsi.

download2.php


jika( hilang ($_GET['jalur']))
{
//Baca urlnya
$url = $_GET['jalur'];

//Hapus cache
hapus statcache ();

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

//Tentukan informasi header
header ('Deskripsi Konten: Transfer File');
header ('Jenis Konten: aplikasi/aliran oktet');
header ('Konten-Disposisi: lampiran; nama file=''. nama dasar ($url).'' ');
header ('Panjang Konten:' . ukuran file ($url));
header ('Pragma: publik');

//Hapus buffer keluaran sistem
menyiram ();

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

//Hentikan dari skrip
NS ();
}
lain{
dibuang 'Jalur file tidak ada.';
}
}
dibuang 'Jalur file tidak ditentukan.'

?>

Keluaran
Setelah link download file PDF di klik maka akan muncul output sebagai berikut.

Video tutorial

Kesimpulan

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