PHP Kirim File Ke Server (Upload File to Server)

En

Berikut ini adalah salah satu cara untuk melakukan pengiriman file (upload) ke server. Cara yang saya lakukan dalam tulisan ini adalah dengan membuat satu folder khusus di dalam direktori root web pada server. Misalkan folder “file_upload” sebagai tempat untuk meletakkan file-file yang dikirim.

Selamat menikmati! Saran dan masukannya saya nantikan. 🙂

HTML Form-nya

<form method="post" name="theForm" action="upload.php" enctype="multipart/form-data">
<table align="center">
<tr>
<td align="right" width="160">Dokumen Pendukung :</td>
<td width="295"><input type="file" name="doc"/></td>
</tr>
<tr>
<td align="right" colspan="2"><input type="submit" value="Kirim Request"/><input type="button" value="Batal"/></td>
</tr>
</table>
</form>

Proses Upload di PHP

 $tmpFileName = $_FILES['doc']['name'];
  $fileName = str_replace(" ","",$tmpFileName);
  $tmpName = $_FILES['doc']['tmp_name'];
  $fileSize = (int) $_FILES['doc']['size'];
  $fileType = $_FILES['doc']['type'];

  $fileNameToCopy = $fileName;
  $copyDir = "../upload_files/";
  $lokasi_dok = "upload_files/";
  $nama_dok = $fileNameToCopy;

if((!empty($_FILES["doc"])) && ($_FILES['doc']['error'] == 0)) {
  //jika ada file yg dipilih.
   if(!file_exists($copyDir.$fileNameToCopy)){
   //jika file tersebut tidak duplikasi nama
    if($fileType == 'application/pdf'){
     //jika tipe file sesuai yg diinginkan
     if($fileSize < 500000){
      //jika ukuran file sesuai (dlm byte)
      //pindahkan file ke direktori di server.
      if(move_uploaded_file($tmpName,$copyDir.$fileNameToCopy)){
       //jika berhasil upload file
       $toBeContinue = true;
      }else{
       //jika gagal upload file
       $toBeContinue = false;
     }else{
      //error : ukuran file tidak sesuai.
      $toBeContinue = false;
     }
    }else{
     //error : tipe file tidak sesuai.
     $toBeContinue = false;
    }
   }else{
    //error : duplikasi
    $toBeContinue = false;
   }
  }else{
   //error : file not found.
   $toBeContinue = false;
  }

if($toBeContinue){
//jika file berhasil di upload
//simpan ke table database.
}else{
//jika file tidak berhasil di upload
//arahkan ke halaman : gagal upload.
}

Database-nya

Misal, nama table-nya file_upload. Nah, dalam table tersebut harus ada field :
file_dir (direktori file yg di upload di server)
file_name (nama file, menggunakan ekstensi)
file_type (tipe file)

Untuk Menampilkan di Halaman HTML

Lalu bagaimana caranya untuk melihat dan mengunduh file tersebut? Langkahnya : lakukan query, ambil data pada table file_upload → simpan nama folder dan nama file (berikut ekstensinya) pada variable  → tampilkan pada HTML.

Misalkan, nama variable untuk direktori adalah : $folder_upload dan nama variable untuk nama file = $file_upload. Maka cara untuk membuat tautan (link) untuk melihat ataupun mengunduh file tersebut adalah :

<a href="../$folder_upload/$file_upload" target="_blank"></a>

Opsi target = blank maksudnya agar tautan (link) terbuka di window atau tab baru pada web browser.

Sekilas Info

//untuk mendapatkan namafile tanpa ekstensinya :
$fileNameNoExtention = basename($fileNameAndExtention, substr(strrchr($fileNameAndExtention, "."), 0));
//untuk mendapatkan ekstensi dari suatu file :
$extention = substr(strrchr($fileNameAndExtention, "."), 1);

Peningkatan

Tidak meletakkan file-file upload di direktori pada localhost server. Untuk menghindari akses langsung ke file melalui web browser. Nah, bagaimana caranya?

Referensi :

http://www.php-mysql-tutorial.com/wikis/php-tutorial/uploading-files-to-the-server-using-php.aspx
http://www.webcheatsheet.com/php/file_upload.php

Iklan

5 thoughts on “PHP Kirim File Ke Server (Upload File to Server)

  1. Kalau saya mau upload ke server berbeda gimana caranya? Misal web server saya di 10.50.3.87 sedangkan saya ingin upload ke 10.50.3.180/data ? Mohon infonya..terimakasih.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s