Melalui PHP, file dapat diunggah ke server.
Contoh dalam bab ini diselesaikan dalam proyek pengujian, dan struktur direktorinya adalah:
test|-----upload # Direktori untuk upload file|-----form.html # File formulir|-----upload_file.php # Kode unggah PHP
Mengizinkan pengguna mengunggah file dari formulir sangat berguna.
Lihatlah formulir HTML berikut untuk mengunggah file:
<html><head><meta charset="utf-8"><title>Tutorial Pembuat Kode (codercto.com)</title></head><body><form action="upload_file.php" method=" post " enctype="multipart/form-data"> <label for="file">Nama file:</label> <input type="file" name="file" id="file"><br> <tipe input ="kirim" nama="kirim" value="Kirim"></form></body></html>
Simpan kode di atas ke dalam file form.html.
Beberapa catatan tentang form HTML di atas tercantum di bawah ini:
Atribut enctype dari tag <form> menentukan tipe konten mana yang akan digunakan saat mengirimkan formulir. Ketika formulir memerlukan data biner, seperti konten file, gunakan " multipart/form-data ".
Atribut type="file" pada tag <input> menentukan bahwa input harus diproses sebagai file. Misalnya, saat melakukan pratinjau di browser, Anda akan melihat tombol telusuri di sebelah kotak input.
Catatan: Mengizinkan pengguna mengunggah file merupakan risiko keamanan yang sangat besar. Harap izinkan hanya pengguna tepercaya untuk melakukan operasi pengunggahan file.
File "upload_file.php" berisi kode untuk mengunggah file:
<?phpif ($_FILES["file"]["kesalahan"] > 0){ echo "Kesalahan:" . Unggah nama file: " . $_FILES["file"]["name"] . "<br>"; echo "Jenis file: " . $_FILES["file"]["type"] . "<br>"; echo "Ukuran berkas: " . ($_FILES["file"]["ukuran"] / 1024) " kB<br>"; $_FILES[ "file"]["tmp_name"];}?>
Dengan menggunakan array global PHP $_FILES, Anda dapat mengunggah file dari komputer klien ke server jauh.
Parameter pertama adalah nama masukan formulir, dan subskrip kedua dapat berupa "nama", "tipe", "ukuran", "tmp_name" atau "kesalahan". Seperti yang ditunjukkan di bawah ini:
$_FILES["file"]["name"] - nama file yang diunggah
$_FILES["file"]["type"] - Jenis file yang diunggah
$_FILES["file"]["size"] - Ukuran file yang diunggah, dalam byte
$_FILES["file"]["tmp_name"] - Nama salinan sementara file yang disimpan di server
$_FILES["file"]["error"] - kode kesalahan yang disebabkan oleh pengunggahan file
Ini adalah cara yang sangat sederhana untuk mengunggah file. Untuk alasan keamanan, Anda harus menambahkan batasan siapa yang diperbolehkan mengunggah file.
Dalam skrip ini, kami menambahkan batasan pada unggahan file. Pengguna hanya dapat mengunggah file .gif, .jpeg, .jpg, .png, dan ukuran file harus kurang dari 200 kB:
<?php// Sufiks gambar yang diunggah diperbolehkan $allowedExts = array("gif", "jpeg", "jpg", "png");$temp = meledak(".", $_FILES["file"][" nama "]);$extension = end($temp); // Dapatkan akhiran file if ((($_FILES["file"]["type"] == "image/gif")|| ($_FILES["file"]["type"] == "gambar/jpeg")||. ($_FILES["file"]["type"] == "gambar/jpg")||. "file"]["type"] == "gambar/pjpeg")||. ($_FILES["file"]["type"] == "gambar/x-png")|| ($_FILES["file"]["type"] == "image/png"))&& ($_FILES["file"]["size"] < 204800) // Kurang dari 200 kb&& in_array($extension, $ diperbolehkanExts)){ if ($_FILES["file"]["error"] > 0) { echo "Error:: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Unggah nama file: " "Jenis berkas: " . . " kB<br>"; echo "Lokasi penyimpanan sementara file: " . $_FILES["file"]["tmp_name"]; }}else{ echo "Format file ilegal";}?>
Contoh di atas membuat salinan sementara dari file yang diunggah di folder sementara PHP server.
Salinan sementara ini akan hilang ketika skrip berakhir. Untuk menyimpan file yang diunggah, kita perlu menyalinnya ke lokasi lain:
<?php// Sufiks gambar yang diunggah diperbolehkan $allowedExts = array("gif", "jpeg", "jpg", "png");$temp = meledak(".", $_FILES["file"][" nama "]);echo $_FILES["file"]["size"];$extension = end($temp); // Dapatkan akhiran file jika ((($_FILES["file"]["type"] == "gambar/gif")|| ($_FILES["file"]["type"] == "gambar/jpeg")|| ($ _FILES["file"]["type"] == "gambar/jpg")||. ($_FILES["file"]["type"] == "gambar/pjpeg")|| ($_FILES["file"]["type"] == "gambar/x-png")||. ($_FILES["file"]["type"] == "gambar/png"))&& ($ _FILES["file"]["size"] < 204800) // Kurang dari 200 kb&& in_array($extension, $allowedExts)){ if ($_FILES["file"]["error"] > 0) { echo "Kesalahan: " : " . $_FILES["file"]["nama"] . "<br>"; echo "Jenis file: " . $_FILES["file"]["type"] . "<br>"; echo "Ukuran berkas: " .$_FILES["file"]["ukuran"] / 1024) " kB<br>"; echo "Lokasi penyimpanan sementara berkas: " $_FILES["file"] ["tmp_name "] . "<br>"; // Tentukan apakah file ada di direktori unggahan di bawah direktori saat ini // Jika tidak ada direktori unggahan, Anda perlu membuatnya (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . "; } else { // Jika file tidak ada di direktori upload, upload file ke direktori upload move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file "][ "nama"]); echo "File disimpan di: " . "upload/" . $_FILES["file"]["nama"]; } }}else{ echo "Format file ilegal";}?>
Script di atas memeriksa apakah file sudah ada. Jika tidak ada, maka akan menyalin file ke direktori bernama "upload".