PHP

Upload – Download File PHP Serta Contoh Source Code

Upload File PHP

PHP memungkinkan Anda untuk mengupload file tunggal dan ganda hanya melalui beberapa baris kode. Fitur unggah file PHP memungkinkan Anda mengunggah file biner dan teks keduanya. Selain itu, Anda dapat memiliki kendali penuh atas file yang akan diunggah melalui otentikasi PHP dan fungsi operasi file. Dengan PHP, kita lebih mudah untuk mengunggah file ke server. Namun, bahaya datang dengan mudah, jadi selalu berhati-hatilah saat mengizinkan upload suatu file.

Skrip PHP dapat digunakan dengan bentuk HTML untuk memungkinkan pengguna mengunggah file ke server. Awalnya file diunggah ke direktori sementara atau temporary dan kemudian dipindahkan ke tujuan target atau folder utama dari sebuah sistem yang kita miliki dengan skrip PHP.

Konfigurasi File

Pertama, pastikan bahwa PHP dikonfigurasi untuk dapat memungkinkan suatu pengunggahan file. Pada file “php.ini” Anda, cari secara langsung nama file yaitu file_uploads, dan setel ke On.

Informasi di halaman phpinfo.php menjelaskan direktori sementara yang digunakan untuk upload file sebagai upload_tmp_dir dan ukuran maksimum file yang dapat diunggah dinyatakan sebagai upload_max_filesize. Parameter ini diatur ke dalam file konfigurasi PHP php.ini. Proses mengunggah file dapat kita buat dengan mengikuti langkah-langkah berikut ini

  1. Pengguna membuka halaman yang berisi formulir HTML yang menampilkan file teks, tombol browse dan tombol send.
  2. Pengguna mengklik tombol browse dan memilih file untuk diupload dari PC lokal.
  3. Path lengkap ke file yang dipilih akan muncul di form teks yang tersedia kemudian pengguna mengklik tombol kirim.
  4. File yang dipilih akan dikirim ke direktori sementara di server.
  5. Skrip PHP yang ditentukan sebagai penangan formulir di atribut tindakan formulir memeriksa bahwa file telah tiba dan kemudian menyalin file ke direktori yang dimaksudkan.
  6. Skrip PHP mengkonfirmasi keberhasilan pengguna.

Seperti biasa saat menulis file, lokasi sementara dan lokasi akhir atau tujuan utama perlu memiliki set izin yang memungkinkan untuk penulisan file. Jika salah satunya diatur menjadi sebuah read-only maka proses akan gagal. File yang diunggah bisa berupa file teks atau file gambar atau dokumen apa pun.

Membuat Form Upload

Kode HTML berikut di bawah ini dapat membuat formulir pengunggahan suatu file. Formulir ini memiliki atribut metode yang disetel ke post dan atribut enctype disetel ke multipart / form-data yang biasanya disebut dengan cara penguploadan data dengan tipe banyak data.

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Beberapa aturan yang harus diikuti untuk formulir HTML di atas:

  • Pastikan formulir menggunakan method = “post”
  • Formulir tersebut juga membutuhkan atribut berikut: enctype = “multipart / form-data”. Ini menentukan jenis konten mana yang akan digunakan saat mengirimkan formulir

Tanpa persyaratan di atas, unggahan file tidak akan berfungsi secara normal. Hal lain yang perlu diperhatikan yaitu

  • Atribut type = “file” dari tag menunjukkan kolom masukan sebagai kontrol pemilihan file, dengan tombol “Jelajahi” di samping kontrol masukan
  • Formulir di atas mengirimkan data ke file bernama “upload.php”, yang akan kita buat selanjutnya

File “upload.php” berisi kode untuk mengupload file yaitu berisi kode sebagai berikut

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

Penjelasan dari kode skrip php diatas yaitu

  1. $ target_dir = “uploads /” – menentukan direktori tempat file akan ditempatkan
  2. $ target_file menentukan path dari file yang akan diunggah
  3. $ uploadOk = 1 belum digunakan (akan digunakan nanti)
  4. $ imageFileType menampung ekstensi file dari file (dalam huruf kecil)
  5. Selanjutnya, periksa apakah file gambar tersebut adalah gambar asli atau gambar palsu

Periksa apakah File Sudah Ada atau belum di server, Sekarang kita bisa menambahkan beberapa batasan. Pertama, kita akan memeriksa apakah file tersebut sudah ada di folder “upload”. Jika ya, pesan kesalahan ditampilkan, dan $ uploadOk disetel ke 0.

Nama masukan file dalam formulir HTML di atas diberi nama dengan “fileToUpload”. Sekarang, kita ingin memeriksa ukuran dari suatu file. Jika file lebih besar dari 500KB, maka pesan kesalahan akan ditampilkan, dan $ uploadOk disetel ke 0.

Kode pada php diatas ini adalah untuk mengupload suatu file yang hanya memungkinkan pengguna untuk mengunggah file JPG, JPEG, PNG, dan GIF dan bisa diatur sesuai dengan keinginan pengguna. Semua jenis file lainnya selain format diatas akan memberikan pesan kesalahan sebelum menyetel $ uploadOk ke 0.

$_FILES di PHP

PHP dengan variabel global $ _FILES berisi semua informasi file. Dengan bantuan variabel global $ _FILES, kita bisa mendapatkan nama file, jenis file, ukuran file, nama file temp atau direktori sementara dan kesalahan yang terkait dengan file. Variabel ini adalah array dimensi ganda dari suatu asosiasi (double array) dan menyimpan semua informasi yang terkait dengan file yang diunggah. Di sini, kami mengasumsikan bahwa nama file disini adalah file. Jadi jika nilai yang diberikan ke atribut nama input dalam formulir unggahan adalah file, maka PHP akan membuat lima variabel berikut ini

  • $_FILES[‘file’][‘tmp_name’] yaitu file yang diupload di direktori sementara pada server web dan mengembalikan nama file sementara dari file yang disimpan di server.
  • $_FILES[‘file’][‘name’] yaitu nama sebenarnya dari file yang diunggah yang mengembalikan nama dari file.
  • $_FILES[‘file’][‘size’] yaitu ukuran dalam byte dari file yang diunggah dan mengembalikan ukuran file (dalam byte).
  • $_FILES[‘file’][‘type’] yaitu jenis MIME dari file yang diunggah dan mengembalikan jenis MIME file.
  • $_FILES[‘file’][‘error’] yaitu kode kesalahan yang terkait dengan unggahan file ini dan mengembalikan kode kesalahan yang terkait dengan file ini.

Fungsi move_uploaded_file()

Fungsi move_uploaded_file () digunakan untuk memindahkan file yang diunggah ke lokasi baru atau dapat memindahkan lokasi file ke folder utama. Fungsi move_uploaded_file () memeriksa secara internal jika file telah diunggah melalui permintaan POST. Ini akan melakukan pemindahkan file jika file tersebut diunggah melalui permintaan POST. Kita dapat buat sintaksnya dengan kode berikut ini

bool move_uploaded_file ( string $filename , string $destination )  

Download File PHP

PHP memungkinkan Anda mengunduh file dengan mudah menggunakan fungsi readfile () bawaan dari fungsi PHP. Fungsi readfile () membaca file dan menulisnya ke buffer output dari php. Fungsi readfile(), yaitu dapat dibuat dengan sintaks berikut ini

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

Penjelasan dari sintaks diatas dapat dijelaskan dengan artian dibawah ini

  • $ filename yaitu mewakili nama dari suatu file
  • $ use_include_path yaitu kode ini adalah parameter opsional yang bisa saja tidak perlu digunakan. Ini secara default adalah false. Anda dapat mengaturnya ke true untuk mencari file di include_path.
  • $ context yaitu mewakili resource stream dari suatu konteks.
  • int, ini akan mengembalikan jumlah byte yang dibaca dari file.


Bagus Dharma Iswara