Senin, 08 November 2021

Upload File Atau Foto Pada PHP

Pendahuluan

Pada artikel sebelumya kita sering sekali menggunakan data berbentuk angka atau atau kata (kalimat). Kali ini kita akan membuat data yang berbentuk file atau foto yang biasanya digunakan untuk memperjelas informasi dari data yang disampaikan.
Kita sesungguhnya tidak menyimpan mentah-mentah file atau gambar tersebut tetapi hanya lokasinya saja. Mengapa lokasinya karena kita mengunggahnya ke folder/tempat yang disiapkan pada server.

Persiapan

Sebelum menggunakan upload file mari setting pengaturan di php.ini yang berisi line file_uploads untuk di atur jadi On file_uploads = On. Untuk membuat upload gambar atau file kita memerlukan ini:
>PHP
>Code Editor

Pembuatan Upload File atau Gambar

Untuk membuatnya kita harus membuat file yang bernama unggah.php yang berfungsi untuk mmbuat formulir pengunggahan dan mengunggahnya ke server.
<?php
$status ="Silahkan upload 1 gambar";
if(isset($_POST['submit'])){
    $filename = $_FILES['file']['name'];
    try{
        move_uploaded_file($_FILES['file']['tmp_name'],'upload/'.$filename);
        $status = htmlspecialchars( basename( $_FILES["file"]["name"])). " sukses terupload";
    }catch(Exception $e){
        $status = $e;
    }catch(Error $e){
        $status = $e;
    }
}
echo $status;
?>
<form method='post' enctype='multipart/form-data'>
 <input type="file" name="file" id="file" multiple>

 <input type='submit' name='submit' value='Upload'>
</form>

Pembuatan Upload Banyak File atau Gambar

Berikut ini merupakan skrip kode untuk menggunggah banyak file dan (atau) gambar.
<?php 
if(isset($_POST['submit'])){
 
 // Count total files
 $countfiles = count($_FILES['file']['name']);

 // Looping all files
 for($i=0;$i<$countfiles;$i++){
  $filename = $_FILES['file']['name'][$i];
  
  // Upload file
  
  move_uploaded_file($_FILES['file']['tmp_name'][$i],'upload/'.$filename);
 
 }
?>
<form method='post' enctype='multipart/form-data'>
 <input type="file" name="file[]" id="file" multiple>

 <input type='submit' name='submit' value='Upload'>
</form>
Skrip ini juga bisa digunakan dalam penyaringan menurut ukuran dan jenis file. Untuk tambahan $_FILES['file']['size'] digunakan untuk mengetahui ukuran file yang diunggah. Sedangkan $_FILES['file']['type'] mengetahui tipe filenya. Mari kita gunakan pada script kode yang sudah kita buat.
multiple upload file php
<?php
if(isset($_POST['submit'])){
 $stat = 1;
 // Membuat fungsi penyaringan
 function Filtering(&$arrFiles){
    $file_ary = array();
    $file_count = count($arrFiles['name']);
    $file_keys = array_keys($arrFiles);

    for ($i=0; $i<$file_count; $i++) {
        foreach ($file_keys as $key) {
            $file_ary[$i][$key] = $arrFiles[$key][$i];
        }
    }

    return $file_ary;
 }
 $file_ary = Filtering($_FILES['file']);
 // Memasukan semua file ke dalam fungsi penyaringan
    foreach ($file_ary as $file) {
        if ($file['size'] > 500000){
            $stat = 0;
            print 'File terlalu besar' . $stat;
        }
        //untuk menyimpan lokasi file kamu bisa menggunakan variabel baru
       //yang berisi 'upload/'.basename($file['name'])
       //ini bisa digunakan untuk data pada database kamu.
        $TipeFile = strtolower(pathinfo( 'upload/'.basename($file['name']),PATHINFO_EXTENSION));
        if($TipeFile != 'png'
        && $TipeFile != 'jpeg'
        && $TipeFile != 'jpg'
        && $TipeFile != 'gif'){
            $stat = 0;
            print 'File bukan gambar' . $stat;
        }
        //hapus tanda untuk melihat informasi file
        print '<br />Nama File: ' . $file['name'];
        print '<br />Tipe File: ' . $TipeFile;
        print '<br />Ukuran File: ' . $file['size'];
    }
 $countfiles = count($_FILES['file']['name']);
 // Looping all files
 for($i=0;$i<$countfiles;$i++){
  $filename = $_FILES['file']['name'][$i];
  // Upload file
  if($stat == 1){
      move_uploaded_file($_FILES['file']['tmp_name'][$i],'upload/'.$filename);
      print '<br />Sukses terunggah : upload/'.$filename;
     }
 }
}
?>
<form method='post' enctype='multipart/form-data'>
 <input type="file" name="file[]" id="file" multiple>

 <input type='submit' name='submit' value='Upload'>
</form>
Diatas saya menggunakan satu fungsi yang sederhana untuk membuat semua file yang diunggah menjadi array. Dan menambahkan variabel $stat untuk memberi tanda bahwa file sudah sesuai dengan kriteria kita yakni tidak lebih dari 500k dan berekstensi gambar. Semoga bermanfaat Dan happy coding yah.

Tidak ada komentar:

Posting Komentar