19 Oktober 2012

Tutorial PHP : Script Upload FTP Solusi Transfer File Besar

image

Ada kalanya kita menghadapi masalah ketika aplikasi web-based yang kita buat membutuhkan fungsi untuk mengupload file yang sangat besar. Secara settingan umum, PHP membatasi upload file besar ini, termasuk di dalamnya ada settingan yang mengacu pada php.ini yang membatasimax_execution_time, upload_max_filesize ataupun post_max_size. Namun kali ini kita tidak akan membahas cara untuk mengubah batasan pada php.ini secara khusus, tapi akan lebih mengacu pada cara membuat script upload ftp sederhana menggunakan PHP. 

Membuat form upload biasa dan form upload FTP sebenarnya tidak jauh berbeda, yang membedakan adalah proses dan login saja. Dimana ketika kita mengupload file menggunakan form upload FTP tentunya kita akan diminta alamat FTP server tujuan, username, password dan juga path servernya. Beda bila kita upload menggunakan form biasa yang mana tidak membutuhkan autentikasi seperti itu. 

Seperti halnya FTP Client berbasis desktop, form upload FTP ini pun mampu mengupload file dengan ukuran besar, secara default php.ini upload FTP ini dibatasi hingga 32Mb, namun bila kita memodifikasi php.ini maka kita akan bisa mengupload file sampai ratusan MB. Nah berikut ini kita akan mencoba untuk membuat script FTP upload sederhana, yang mana nantinya setelah Anda berhasil mencoba, Anda akan bisa memodifikasinya lebih lanjut sesuai kebutuhan Anda, apakah akan dibuat seperti form upload biasa yang diakali dengan "menghilangkan" autentikasi di tampilan user, tapi meletakkannya sebagai variabel di dalam mesin upload itu sendiri, itu terserah Anda nantinya. Sudah siap? Yuk kita mulai.

Langkah 1

Buat form HTML sederhana yang berisi textbox yang harus diisikan alamat FTP Server, Username, Password, Path Server dan file yang ingin diupload. 
<form action="uploadftp.php" method="POST" enctype="multipart/form-data">
<table align="center">
 <tr><td align="center" colspan=2><h2>FTP UPLOAD</h2></td></tr>
 <tr>
  <td align="right">FTP Server :</td>
  <td><input size="50" type="text" name="server" value=""></td>
 </tr>
 <tr>
  <td align="right">Username :</td>
  <td><input size="50" type="text" name="user"  value=""></td>
 </tr>
 <tr>
  <td align="right">Password :</td>
  <td><input size="50" type="text" name="password" value=""></td>
 </tr>
 <tr>
  <td align="right">Server Path :</td>
  <td><input size="50" type="text" name="serverpath"></td>
 </tr>
 <tr>
  <td align="right">Choose file :</td>
  <td><input name="userfile" type="file" size="50"></td>
 </tr>
 <tr>
  <td align="center" colspan=2><input type="submit" name="submit" value="Upload image" /></td>
 </tr> 
</table> 
</form>

Langkah 2

Setelah membuat form HTML tersebut, maka tentukanlah variabel untuk menangkap semua informasi yang sudah dipost oleh form di atas
set_time_limit(300); //limit diset agar bisa upload file besar
 
$paths=$_POST['serverpath'];
$filep=$_FILES['userfile']['tmp_name'];
$ftp_server=$_POST['server'];
$ftp_user_name=$_POST['user'];
$ftp_user_pass=$_POST['password'];
$name=$_FILES['userfile']['name'];


Langkah 3

Buatlah script untuk melakukan koneksi FTP sesuai dengan konfigurasi FTP yang sudah diterima di langkah 2
$conn_id = ftp_connect($ftp_server); // mencoba konek ke ftp server
 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // login dengan username and password yang telah diinput
 
// cek koneksi dan tampilkan hasilnya
if ((!$conn_id) || (!$login_result)) {
       echo "FTP connection has encountered an error!";
       echo "Attempted to connect to $ftp_server for user $ftp_user_name....";
       exit;
} else {
   echo "Connected to $ftp_server, for user $ftp_user_name".".....";
}


Langkah 4

Jika sudah berhasil login, maka kita bisa memulai proses upload file ke server FTP tersebut, tampilkan status apakah upload berhasil atau tidak.
$upload = ftp_put($conn_id, $paths.'/'.$name, $filep, FTP_BINARY); // upload the file to the folder yang telah ditentukan
 
// check apakah upload berhasil atau tidak?
if (!$upload) {
    echo "FTP upload has encountered an error!";
} else {
    echo "Uploaded file with name $name to $ftp_server ";
}


Langkah 5

Jika sudah selesai proses upload FTP, maka tutup kembali koneksi FTP di atas.
ftp_close($conn_id); // tutup koneksi FTP


Script Lengkap

Nah, gabungkan semua langkah maka script akan jadi seperti ini. Selamat mencoba 
<?php if(!isset($_POST["submit"])){?>
<form action="uploadftp.php" method="POST" enctype="multipart/form-data">
<table align="center">
 <tr><td align="center" colspan=2><h2>FTP UPLOAD</h2></td></tr>
 <tr>
  <td align="right">FTP Server :</td>
  <td><input size="50" type="text" name="server" value=""></td>
 </tr>
 <tr>
  <td align="right">Username :</td>
  <td><input size="50" type="text" name="user"  value=""></td>
 </tr>
 <tr>
  <td align="right">Password :</td>
  <td><input size="50" type="text" name="password" value=""></td>
 </tr>
 <tr>
  <td align="right">Server Path :</td>
  <td><input size="50" type="text" name="serverpath"></td>
 </tr>
 <tr>
  <td align="right">Choose file :</td>
  <td><input name="userfile" type="file" size="50"></td>
 </tr>
 <tr>
  <td align="center" colspan=2><input type="submit" name="submit" value="Upload image" /></td>
 </tr> 
</table> 
</form>
<?php
} else {
 
set_time_limit(300); //limit diset agar bisa upload file besar
 
$paths=$_POST['serverpath'];
$filep=$_FILES['userfile']['tmp_name'];
$ftp_server=$_POST['server'];
$ftp_user_name=$_POST['user'];
$ftp_user_pass=$_POST['password'];
$name=$_FILES['userfile']['name'];
 
$conn_id = ftp_connect($ftp_server); // mencoba konek ke ftp server
 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // login dengan username and password yang telah diinput
 
// cek koneksi dan tampilkan hasilnya
if ((!$conn_id) || (!$login_result)) {
       echo "FTP connection has encountered an error!";
       echo "Attempted to connect to $ftp_server for user $ftp_user_name....";
       exit;
} else {
   echo "Connected to $ftp_server, for user $ftp_user_name".".....";
}
 
$upload = ftp_put($conn_id, $paths.'/'.$name, $filep, FTP_BINARY); // upload the file to the folder yang telah ditentukan
 
// check apakah upload berhasil atau tidak?
if (!$upload) {
    echo "FTP upload has encountered an error!";
} else {
    echo "Uploaded file with name $name to $ftp_server ";
}
 
ftp_close($conn_id); // tutup koneksi FTP  
 
}
?>

Tidak ada komentar:

Posting Komentar