PHP - Mengupload File
Skrip PHP dapat digunakan dengan bentuk HTML untuk memungkinkan pengguna mengunggah file ke server. Awalnya file diunggah ke direktori sementara dan kemudian dipindahkan ke tujuan target dengan skrip PHP.
Informasi di phpinfo.php Halaman menjelaskan direktori sementara yang digunakan untuk upload file sebagai upload_tmp_dir dan ukuran file maksimum yang diizinkan yang dapat diunggah dinyatakan sebagai upload_max_filesize. Parameter ini diatur ke dalam file konfigurasi PHPphp.ini
Proses mengunggah file mengikuti langkah-langkah berikut -
Pengguna membuka halaman yang berisi formulir HTML yang menampilkan file teks, tombol telusuri, dan tombol kirim.
Pengguna mengklik tombol browse dan memilih file untuk diupload dari PC lokal.
Path lengkap ke file yang dipilih muncul di teks yang diajukan kemudian pengguna mengklik tombol kirim.
File yang dipilih dikirim ke direktori sementara di server.
Skrip PHP yang ditentukan sebagai penangan formulir di atribut tindakan formulir memeriksa bahwa file telah tiba dan kemudian menyalin file ke direktori yang dimaksudkan.
Skrip PHP mengkonfirmasi keberhasilan pengguna.
Seperti biasa saat menulis file, lokasi sementara dan akhir perlu memiliki set izin yang memungkinkan penulisan file. Jika salah satu diatur menjadi hanya-baca maka proses akan gagal.
File yang diunggah bisa berupa file teks atau file gambar atau dokumen apa pun.
Membuat formulir unggahan
Kode HTM berikut di bawah ini membuat formulir pengunggah. Formulir ini memiliki atribut metode yang disetel kepost dan atribut enctype disetel ke multipart/form-data
<?php
if(isset($_FILES['image'])){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size =$_FILES['image']['size'];
$file_tmp =$_FILES['image']['tmp_name'];
$file_type=$_FILES['image']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
$extensions= array("jpeg","jpg","png");
if(in_array($file_ext,$extensions)=== false){
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
}
if($file_size > 2097152){
$errors[]='File size must be excately 2 MB';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"images/".$file_name);
echo "Success";
}else{
print_r($errors);
}
}
?>
<html>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit"/>
</form>
</body>
</html>
Ini akan menghasilkan hasil sebagai berikut -
Membuat skrip unggahan
Ada satu variabel PHP global yang disebut $_FILES. Variabel ini adalah larik dimensi ganda asosiasi dan menyimpan semua informasi yang terkait dengan file yang diunggah. Jadi jika nilai yang diberikan ke atribut nama input dalam formulir unggahan adalahfile, maka PHP akan membuat lima variabel berikut -
$_FILES['file']['tmp_name'] - file yang diunggah di direktori sementara di server web.
$_FILES['file']['name'] - nama sebenarnya dari file yang diunggah.
$_FILES['file']['size'] - ukuran dalam byte dari file yang diunggah.
$_FILES['file']['type'] - jenis MIME dari file yang diunggah.
$_FILES['file']['error'] - kode kesalahan yang terkait dengan unggahan file ini.
Contoh
Contoh di bawah ini harus memungkinkan mengunggah gambar dan memberikan kembali hasil sebagai informasi file yang diunggah.
<?php
if(isset($_FILES['image'])){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size = $_FILES['image']['size'];
$file_tmp = $_FILES['image']['tmp_name'];
$file_type = $_FILES['image']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
$extensions= array("jpeg","jpg","png");
if(in_array($file_ext,$extensions)=== false){
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
}
if($file_size > 2097152) {
$errors[]='File size must be excately 2 MB';
}
if(empty($errors)==true) {
move_uploaded_file($file_tmp,"images/".$file_name);
echo "Success";
}else{
print_r($errors);
}
}
?>
<html>
<body>
<form action = "" method = "POST" enctype = "multipart/form-data">
<input type = "file" name = "image" />
<input type = "submit"/>
<ul>
<li>Sent file: <?php echo $_FILES['image']['name']; ?>
<li>File size: <?php echo $_FILES['image']['size']; ?>
<li>File type: <?php echo $_FILES['image']['type'] ?>
</ul>
</form>
</body>
</html>
Ini akan menghasilkan hasil sebagai berikut -