Wed Dec 2019 1 year ago

Cara Upload file Banyak dengan PHP

PHP dapat melakukan pengiriman data/ file dalam bentuk array, sehingga file yang di upload dapat lebih dari satu. Setiap proses uploading data., PHP dapat menampilkan daftar kesalahan yang terdiri atas:

  • UPLOAD_ERR_OK, value=0. tidak terjadi kesalahan dan file berhasil di uploadke server.
  • UPLOAD_ERR_INI_SIZE, value=1, file yang di upload melebihi ukuran direktive upload_max_file yang terdapat didalam PHP.
  • UPLOAD_ERR_FORM_SIZE, value=2, file yang di upload melebihi ukuran yang ada didalam atribut form MAX_FILE_SIZE, yang ditentukan dalam form html.
  • UPLOAD_ERR_PARTIAL, value=3, file yang diupload tidak seluruhnya terkirim.
  • UPLOAD_ERR_NO_FILE, value=4, tidak ada file yang dikirim.
  • UPLOAD_ERR_NO_TEMP_DIR, value=6, tidak ditemukan folder temporary.
  • UPLOAD_ERR_CANT_WRITE, value=7, gagal didalam melakukan penulisan ke disk atau penyimpanan data.

 

Berikut ini contoh lengkapnya untuk proses upload data ke server yang terdiri atas beberapa file.

Contoh membuat fungsi upload.

 

<?php 


function namaFile($key,$userfile,$site, 
             $folder, 
             &$namaFile) 
{ 
   global $folderMain; 
   $folder1 = $folderMain; 
   $slash = ""; 
   $mainFolder = $folder1 . $site . $slash . $folder . $slash; 
   $namaFile = basename($_FILES[$userfile]["name"][$key]); 
   $file = $mainFolder . $namaFile; 
   return $file; 
} 

function uploadData($key,$userfile,$namaFile) 
{       
   // buat temporari file 
   $tempFile = $_FILES[$userfile]["tmp_name"][$key]; 
   move_uploaded_file($tempFile,$namaFile); 
} 

function pesanStatus ($status,$file) 
{ 
   echo "File:" . $file; 
   echo ", Status:" . $status; 
   echo "<br />"; 
} 

function cekAtributFile($key,$userfile,&$ukuranFile) 
{ 
   $tipeFile = $_FILES[$userfile]["type"][$key]; 
   $ukuranFile = ($_FILES[$userfile]["size"][$key] / 1024); 
   if (stristr($tipeFile,"jpeg") === false) { 
      return 0; 
   }else{ 
      return $tipeFile; 
   } 
} 

function prosesUploadData() 
{ 
   $namaFileYangDiUpload = ""; 
   $ukuranFile = 0; 
    
   $daftarArgumen = func_num_args(); 
   $key = func_get_arg(0);         // key 
   $kesalahan = func_get_arg(1);   // error 
   $site = func_get_arg(2);      // site 
   $folder = func_get_arg(3);      // folder 
   $namaFileField = func_get_arg(4);   // elemen file field 
    
   $pathFile = namaFile($key,$namaFileField,$site, 
                   $folder,$namaFileYangDiUpload); 
   $tipeFile = cekAtributFile($key,$namaFileField,$ukuranFile); 
    
   switch ($kesalahan) 
   {    
      case UPLOAD_ERR_OK: 
         if ($tipeFile){ 
            uploadData($key,$namaFileField,$pathFile); 
            pesanStatus("Sukses di Kirim", $namaFileYangDiUpload); 
         }else{ 
            echo "sorry!, bukan tipe jpg/jpeg/pjpeg<br />";    
         } 
         return "UPLOAD_ERR_OK"; 
         break; 
      case UPLOAD_ERR_INI_SIZE: 
         pesanStatus("Gagal di kirim, File lebih besar dari php.ini", 
                  $namaFileYangDiUpload); 
         return "UPLOAD_ERR_INI_SIZE"; 
         break; 
      case UPLOAD_ERR_FORM_SIZE: 
         pesanStatus("Gagal di kirim, File > 300 MB", 
                  $namaFileYangDiUpload); 
         return "UPLOAD_ERR_FORM_SIZE"; 
         break; 
      case UPLOAD_ERR_PARTIAL: 
         pesanStatus("Gagal di kirim, hanya sebagian file terkirim", 
                  $namaFileYangDiUpload); 
         return "UPLOAD_ERR_PARTIAL"; 
         break; 
   } 
} 

function tampilDaftar($number=3) 
{ 
   echo "Jumlah data"; 
echo "<select name=jmldata id=jmldata>"; 
   for ($i=1; $i<=$number; $i++){ 
   echo "<option value=$i>$i</option>"; 
   } 
echo "</select>"; 
echo "<input type=submit name=button id=button value=Set Upload>"; 

} 

?>

Membuat form pengiriman data.

<?php require_once "../path/path.php"; ?> 
<?php require_once "list6_9.php"; ?> 
<?php 
if (is_array($_FILES["userFile"]["name"])){    
   foreach ($_FILES["userFile"]["error"] as $key=>$kesalahan){ 
      prosesUploadData($key, $kesalahan, "php_oop", "images", "userFile"); 
   } 
} 
?> 
<html> 
<head> 
<title>Test Upload Data</title> 
</head> 
<body> 
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
<?php tampilDaftar(100); ?> 
<br> 
File yang akan di upload 
<input name="MAX_FILE_SIZE" type="hidden" id="MAX_FILE_SIZE" value="300000" /> 
<br> 
<?php for($i=0; $i<$_POST["jmldata"]; $i++){ ?> 
<input type="file" name="userFile[]" id="userFile[]" /> 
<br /> 
<?php } ?> 
<input type="submit" name="button" id="button" value="Upload" /> 
</form> 
</body> 
</html>

 

chmod()

Secara default pada saat kita mengupload file ke server, maka server mengatur file tersebut dengan protect artinya tidak dapat di akses oleh world. Oleh karena itu setelah anda mengirimkan data keserver, lakukan perubahan mode dengan menggunakan sintaks chmod() atau Change Mode.

chmode($namaFile,0644)

Ini berarti data $namaFile, dapat dibaca dan ditulis oleh pihak pemilik dan dapat dibaca oleh siapapun. 0644 merupakan kode yang digunakan agar user dapat mengakses data tersebut.