Skip to content

Upload Multiple File Dengan PHP

Bisa Anda bayangkan bagaimana repotnya seandainya kita harus mengupload file atau dokumen yang jumlahnya cukup banyak ke web server. Kalau kita cuma mengandalkan aplikasi upload seperti yang pernah kita bahas pada tulisan sebelumnya, tentu sangat melelahkan dan juga membosankan. Mengapa demikian? Ya tentu saja, karena aplikasi tersebut hanya mampu mengirimkan satu dokumen dalam satu kali upload.

Oleh karena itu kita perlu memodifikasi aplikasi tersebut agar bisa mengirimkan banyak file dalam satu kali upload. Tentu pekerjaan kita akan lebih ringan apabila kita bisa mengupload banyak dokumen sekaligus dengan sekali klik saja. Disamping lebih praktis, cara ini juga bisa menghemat bandwidth Internet.

Kita bisa membuat aplikasi web untuk mengupload multiple file dengan cara menyimpan informasi file yang akan kita upload tersebut dalam suatu variabel array. Tekniknya cukup mudah, yaitu dengan menambahkan tanda kurung siku atau [] di belakang nama tag input pada form yang kita buat.

Contohnya bisa kita lihat pada cuplikan kode program di bawah ini.

<form action="upload.php" method="post" enctype="multipart/form-data">
   <p><input name="userfile[]" type="file" /></p>
   <p><input name="userfile[]" type="file" /></p>
   <p><input name="submit" type="submit" value="Upload" />
</form>

Ketika kita mengklik tombol Upload, secara otomatis semua file yang kita kirimkan akan disimpan dalam variabel array $_FILES['userfile']. Hampir sama dengan aplikasi sebelumnya bukan? Bedanya cuma terletak pada nama tag input saja.

Lalu sekarang bagaimana cara menangani data di sisi server? Tidak jauh beda dengan aplikasi sebelumnya. Hanya saja, pada kasus ini data yang dikirimkan tidak hanya satu tapi ada beberapa buah data (pada contoh ini ada dua) yang semuanya disimpan dalam variabel $_FILES['userfile'].

Tentu Anda masih ingat bahwa array $_FILES itu sendiri sebenarnya berisi beberapa informasi terkait dengan file atau dokumen yang kita upload. Array $_FILES tersebut merupakan array majemuk yang terdiri dari:

$_FILES['userfile']['name']

Array ini berisi nama sebenarnya (asli) dari file atau dokumen yang tersimpan di komputer user sebelum file tersebut diupload ke server.

$_FILES['userfile']['tmp_name']

Array ini berisi nama file temporer dari file atau dokumen yang diupload. Lokasi file ini ada di direktori temporer pada web server.

$_FILES['userfile']['size']

Array ini berisi informasi berapa ukuran (dalam byte) file atau dokumen yang diupload.

$_FILES['userfile']['type']

Array ini berisi MIME type dari file atau dokumen yang diupload, misalnya image/jpeg, image/png, image/gif, text/plain, dan sebagainya.

Untuk kasus aplikasi upload multiple file seperti yang kita buat ini, array $_FILES di atas bisa kita akses dengan menggunakan indeks bilangan yang menunjukkan urutan dari file yang kita upload. Sebagai contoh, jika file yang kita upload tersebut adalah gambar_1.jpg dan gambar_2.jpg maka informasi nama file tersebut akan tersimpan di array $_FILES dengan struktur sebagai berikut.

$_FILES['userfile']['name'][0] = 'gambar_1.jpg';
$_FILES['userfile']['name'][1] = 'gambar_2.jpg';

Selanjutnya, kita bisa menyimpan file tersebut dengan cara yang sama seperti pada aplikasi sebelumnya. Berikut ini adalah contohnya.

$jumlah_file = count ($_FILES['userfile']['name']);
$path = pathinfo($_SERVER['PHP_SELF']);
for ($i = 0; $i < $jumlah_file; $i++)
{
   $tmp_file = $_FILES['userfile']['tmp_name'][$i];
   $filetype = $_FILES['userfile']['type'][$i];
   $filesize = $_FILES['userfile']['size'][$i];
   $filename = $_FILES['userfile']['name'][$i];
   $destination = $path['dirname'] . '/data/' . $filename;
   move_uploaded_file($tmp_file, $_SERVER['DOCUMENT_ROOT'] . $destination);
}

Barangkali ada yang mempunyai cara lain yang lebih praktis?

Source code bisa didownload di sini.

Tulisan Terkait:

Bagaimana Komentar Anda?

Monggo kalau Anda mau mengomentari tulisan di atas! Bertanya atau mengkritik juga boleh, tapi jangan terlalu menyakitkan :).

  • Bayu | February 22nd, 2010 jam 9:22 am

    Thank you. Menarik sekali artikelnya, sangat membantu saya.

  • Wahyu Wibowo | February 22nd, 2010 jam 9:23 am

    Sama-sama.

  • clenoro | February 23rd, 2010 jam 6:55 pm

    Blog anda cukup menarik, oleh sebab itu saya menuliskan review tentang blog anda pada alamat http://bagisahabat.blogspot.com/2010/02/sumber-tip-trik-dan-tutorial-komputer.html

    Hormat saya,

    Clenoro

  • Wahyu Wibowo | February 23rd, 2010 jam 8:10 pm

    Wow… makasih banget sudah menulis review tentang blog ini. Salam kenal.

  • isham | March 26th, 2010 jam 5:46 pm

    trmksh artikelnya, bagaimana ya kalau multiupload memakai databases (data2 di db, filenya di folder sendiri)?

  • tommy | April 15th, 2010 jam 3:04 am

    menarik nih :) kebetulan saya juga pengen buat yang seperti ini :D makasih atas scriptnya

  • ryan | January 27th, 2011 jam 5:04 pm

    sumpah ane lg butuh banget gan script kayak gnii…,, baguss gan,, thx

  • Gie | March 14th, 2011 jam 3:07 pm

    Thanks ya, solve my problem, uda 3 hari nyari yg kayak gini….

  • zon | May 20th, 2011 jam 1:00 pm

    koq gak bisa didownload lagi surce code nya mas..???
    tlong krim ke email saya donk…

  • Wahyu Wibowo | May 21st, 2011 jam 12:30 am

    @zon, silakan dicoba lagi.

  • condel | July 18th, 2011 jam 12:12 pm

    mkasi Gan, magnstab

  • Muhammad Asri alias wagino | October 18th, 2011 jam 6:58 pm

    Suwun Mas tak coba e sik….

Tinggalkan Pesan