Upload Gambar Dengan AJAX

Jun 30, 2010 by MyPHPtutorials Level: Mahir Komentar Print

Di tutorials Upload Gambar Dengan php sudah dijelaskan cara mengupload file dengan PHP. Tutorial Upload Gambar dengan AJAX akan menggunakan cara yang sama dengan yang digunakan di tutorial tersebut, ditambahan sedikit trik dan javascript. Untuk meng-upload gambar dengan AJAX diperlukan bantuan  <iframe>. Di tutorial upload gambar dengan PHP digunakan html form seperti di bawah:

<!--form to upload file-->
<form name="formupload" method="post" enctype="multipart/form-data" action="script/to/upload/file.php">
   Picture : <input name="picture" type="file" />
   <input type="submit" name="upload" value="Upload" />
</form>

Perlu sedikit perubahan di html form yang digunakan untuk mengupload file seperti berikut:

<iframe name="upload-frame" id="upload-frame" style="display:none;"></iframe>
<form name="formupload" method="post" enctype="multipart/form-data" action="upload.php" target="upload-frame" onsubmit="startUpload();">
   Picture : <input name="picture" type="file" />
   <input type="submit" name="upload" value="Upload" />
</form>
<div id="uploaded-picture">
<!-- div tempat photo yang telah diupload ditampilkan -->
</div>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function startUpload(){
  $("#uploaded-picture").html("loading...");
}

function displayPicture(pictureUrl){
  var img = new Image();
  $(img).load(function(){
    $(this).hide();
    $("#uploaded-picture").html($(this));
    $(this).fadeIn();
  }).attr('src', pictureUrl)
  .error(function(){
    alert("gagal menampilkan gambar");
  });
}
</script>

Di baris 1 ditambahkan html tag <iframe> dengan atribut name="upload-frame", id="upload-frame" dan menggunakan atribut style="display:none;" agar <iframe> tersembunyi. Di bagian tag <form> baris 2 ditambahkan atribut target="upload-frame", atribut target ini diisi dengan hal yang sama dengan atribut name"upload-frame" dari tag <iframe>. Baris 6 menambahkan tag <div/> tempat menampilkan gambar yang telah diupload. Baris 9 menambahkan javascript jquery. Baris selanjutnya membuat dua function javascript, startUpload() untuk menampilkan text loading saat gambar sedang diupload dan displayPicture(pictureUrl) untuk menampilkan gambar setelah selesai diupload.

Langkah selanjutnya yang perlu dilakukan adalah membuat script untuk mengupload file.

<?php
//file upload.php
   $fileName = $_FILES['picture']['name'];
   $fileSize = $_FILES['picture']['size'];
   $fileError = $_FILES['picture']['error'];
   $success = false;
   if($fileSize > 0 || $fileError == 0){
     $move = move_uploaded_file($_FILES['picture']['tmp_name'], 'photo/'.$fileName); //atau ke directory yang dinginkan
     if($move){
	$success = true;
     }
   }

echo '<script type="text/javascript">';
  if($success){
    echo "parent.displayPicture('photo/$fileName');";
  }else{
    echo "alert('Upload gagal $fileError');";
  }
echo '</script>';
?>

Script di atas menggunakan script yang sama dengan tutorial Upload Gambar dengan PHP hanya ditambahkan javascript dibagian bawah baris 14. Jika file gagal diupload maka akan ditampilkan alert dan jika file berhasil diupload maka akan dipanggil function displayPicture().

Selamat Mencoba



Jika ada pertanyaan tentang tutorial Upload Gambar dengan AJAX bisa ditanyakan di http://ask.myphptutorials.com.

Silahkan login atau register sebelum meninggalkan komentar.