Rabu, 13 November 2013

Multi Upload Dengan PHP


Upload atau yang sering dikenal dengan mengunggah data ini adalah menduplikat (copy) data dari komputer pengguna (client) ke komputer penyedia layanan mengunggah file (server). Proses upload dapat digunakan untuk banyak jenis file (ekstensi yang bermacam – macam) mulai dari file gambar, audio, video, aplikasi dan masih banyak lagi. Proses upload terdiri dari 2 (dua) macam cara:

   1.Yang pertama kita mengunggah file dari komputer client ke komputer server. Upload dengan cara seperti ini memiliki beberapa keuntungan diataranya :

a.       Managemen file lebih mudah karena menggunakan direktori (folder).
b.       Proses upload lebih cepat, karena tidak melalui database.
c.       Dilakukan dengan meng-copy file dari client ke komputer server.
d.       Mudah untuk melakukan backup data.

Cara semacam ini juga mempunyai beberapa kelemahan diantaranya :

a.   Karena menggunakan direktori, pemantauan data akan lebih sulit dibandingkan dengan database.
b.       Memerlukan banyak folder jika ingin memisah antara data client yang satu dengan yang lain.

   2.Cara yang kedua adalah dengan mengunggah file dari pengguna ke database server. Cara ini terhitung lebih praktis dari pada cara yang pertama, keuntungan yang dapat diperoleh antara lain :

a.       Proses pemantauan data lebih efisien.
b.       Hapus data, edit data dapat dilakukan lebih baik dan lebih akurat.
c.       Cukup menggunakan beberapa tabel untuk menampung banyak pengguna (client).
d. Banyak dikembangkan oleh developer sehingga ketersediaan informasi mengenai perkembangan database dapat terjamin.

Sekalipun cara yang kedua ini terbilang lebih praktis, namun cara ini juga mempunyai beberapa kelemahan :

a.   Jika terlalu banyak file yang diupload dapat menyebabkan server down dan performa databasenya juga menurun.
b.       Proses backup membutuhkan waktu yang lama.
c.      Sulit membedakan antara data pengguna yang satu dengan yang lainya, karena semua berada dalam satu tabel yang sama.

Kedua cara / metode di atas adalah yang sering digunakan untuk proses upload, sedangkan pada pembahasan kali ini hanya akan dijelaskan cara mengupload file dengan menduplikat (copy) file dari komputer client ke komputer server.

   1.Sebelum masuk ke tahap pembahasan, kita perlu membuat sebuah folder dengan nama “file”, folder inilah yang digunakan untuk menyimpan file yang diupload oleh client.Jadikan folder "file" satu direktori dengan file - file PHP.

    2.Index.php
<html>
<head>
    <title>Multiple Upload</title>
</head>
<body>
<form method='POST' action='#'>
Jumlah file : <select name='jumlah'>

<?php

// isi jumlah maksimal file yang diupload
$x = 6;

// lakukan looping untuk batas upload
for($i=1;$i<=$x;$i++){

    // menampilkan jumlah terpilih
    if(!empty($_POST['jumlah']) and $_POST['jumlah']==$i){
        echo"<option value='$i' selected>$i</option>";
    }else{
    // menampilkan keseluruhan
        echo"<option value='$i'>$i</option>";
    }
}
echo"</select>";

?>
<input type='submit' name='send' value='pilih'/>
</form>

<form method='POST' action='upload.php' enctype='multipart/form-data'>

<?php

// jumlah file yang diupload
$jum = $_POST['jumlah'];

if(empty($jum)){
    // jika kosong
    echo"Silakan pilih jumlah file.";
}else{
    // jika isi lakukan looping input file
    for($a=1;$a<=$jum;$a++){
   
        // input file sebanyak $a buah
        echo"
        <input type='file' name='data$a' />
        <input type='hidden' name='jumlah[]' value='$a' /><br/>";
       
    }
}
?>

<br/><input type='submit' name='upload' value='upload'/>
</form>
</body>
</html>


Output :




Penjelasan :

for($i=1;$i<=$x;$i++){ digunakan untuk melakukan looping sebanyak $x = 6; . Kemudian di dalam looping juga terdapat sebuah kondisi, jika jumlah file yang akan diupload diisikan kemudian disubmit, proses ini akan menyebabkan $_POST['jumlah'] memiliki nilai !empty($_POST['jumlah']), dan ketika nilai tersebut sama dengan nilai pada saat looping $_POST['jumlah']==$i. Maka secara otomatis jumlah yang tadi terpilih akan disorot sebagai pilihan.

Proses submit ini hanya dilakukan pada satu halaman index saja untuk mendapatkan nilai dari jumlah file yang diupload. Pada baris berikutnya setelah jumlah deketahui dilakukan looping yang kedua untuk mendapatkan jumlah input file yang dibutuhkan sesuai dengan jumlah yang dipilih tadi. for($a=1;$a<=$jum;$a++) variabel $jum akan memiliki nilai yang berbeda – beda, nilai tersebut dipengaruhi saat memilih jumlah input file yang dibutuhkan.

Untuk script <input type='file' name='data$a' /> ,name yang digunakan adalah data$a, name ini juga dapat berubah sesuai jumlah yang dipilih, misal : 1 atau 1,2 atau 1,2,3 dan seterusnya hingga batas jumlah file yang dapat diupload.

Script <input type='hidden' name='jumlah[]' value='$a' /> name = “jumlah[]” merupakan pembentukan array sehingga ketika nilai variabel $a lebih dari satu, namun nilai – nilai tersebut tetap dikumpulkan dalam satu name yaitu “jumlah[]”. Penggunaan input hidden ini sangat berguna untuk mengembalikan nilai dari masing – masing file baik nama file, tipe file, ukuran file maupun path file pada saat akan diupload nanti.

Contoh :

  
3. Upload.php
<?php
// direktori penyimpanan
$folder = "file/";

// ambil nilai yang dikirim
$jumlah = $_POST['jumlah'];

// hitung jumlah array
$jum = count($jumlah);

if(!empty($jum)){
    // lakukan looping untuk proses upload
    for($x=1;$x<=$jum;$x++){
   
        // nama File
        $namaFile = $_FILES['data'.$x]['name'];
       
        // tipe File
        $tipeFile = $_FILES['data'.$x]['tipe'];
       
        // ukuran file
        $ukuranFile = $_FILES['data'.$x]['size'];
       
        // tmp Name / path file sementara
        $pathFile = $_FILES['data'.$x]['tmp_name'];
       
        // upload file
        $uploadFile = $folder.$namaFile;
       
        // proses upload
            if($ukuranFile!=0){
                // lakukan upload move_uploaded_file(path file sementara, file tujuan upload)
                if(move_uploaded_file($pathFile,$uploadFile)){
                    echo "File : $namaFile sukses diupload <br/>";
                }else{
                    echo "File : $namaFile gagal diupload <br/>";
                }
            }else{
                echo "File gagal diupload <br/>";
            }
        }
} // jika $jum != 0
else{
    echo"Tidak ada file terpilih";
}

?>

Penjelasan :

Definisikan nama folder yang kita buat dengan variabel “$folder” ($folder = "file/";). Kemudian input hidden tadi, kemudian dari variabel $jumlah yang berupa array dihitung nilainya, kemudian lakukan looping for($x=1;$x<=$jum;$x++),  di dalam proses looping ini dideklarasikan kembali isi dari array “data$a” (pada pembahasan awal). Didalam array ini nama file, tipe file, ukuran file dan path file didapatkan untuk selanjutnya dilakukan proses upload.

Sementara variabel $x nilainya juga dapat berubah – ubah sesuai dengan jumlah yang dipilih tadi, namun pada dasarnya variabel ini akan mengembalikan jumlah nilai sebelumnya. Misalkan jika tadi memilih input filenya sebanyak 4 buah maka akan dikembalikan sebanyak 4 buah juga. Kemudian pada saat proses looping kondisinya juga dibuat sama agar perulangan datanya bisa sesuai seperi pada saat file dikirim.

move_uploaded_file($pathFile,$uploadFile),adalah proses terakhir untuk mengupload file dari client ke server. Variabel $pathFile adalah direktori sementara tempat file disimpan kemudian variabel $uploadFile adalah “alamat” baru file ketika diupload dikomputer server.

Output :



Semoga pembahasan yang singkat ini dapat menambah kekayaan ilmu pengetahuan kita, tak ada yang seutuhnya sempurna didunia ini, kesempurnaan hanya akan dicapai saat kita saling bahu - membahu melengkapi apa yang kurang dalam diri kita, "sebaik baik ilmu adalah yang bermanfaat bagi sesama", ikhwan anshori

--- Terima kasih ---





 
Like This Article ?

0 komentar

Posting Komentar

Cari sesuatu?

Teman

 
 
Copyright © 2013 goldenbooks - All Rights Reserved
Golden Books - Powered By Blogger