Trik Upload PHP

Trik upload php:rename sebelum diapload apa bila ada yang sama pada server

Upload file adalah salah satu fasilitas pada web yang makin sering digunakan, file yang ada pada komputer kita dapat
kita simpan ke dalam directory server agar dapat dimanfaatkan untuk berbagai keperluan. Pada setiap bahasa pemrograman
web sudah pasti ada fungsi-fungsi tersendiri untuk dapat menciptakan fasilitas upload.

Banyaknya pertanyaan kepada saya akhir-akhir ini tentang masalah upload file ke server cukup beragam namun yang paling
sering ditanyakan adalah masalah “apabila ada 1 file yang diupload ke server, sedangkan ada file dengan nama yang sama
pada server? Bagaimana cara agar file yang sudah ada tidak tertiban dan file yang baru diupload akan digantikan dengan
nama baru”
.

Jawabannya adalah perlu dilakukan sebuah validasi sebelum file di kirim ke server. Validasi itu berupa mengecek
apakah pada directory tujuan ada nama file yang sama dengan file yang akan kita upload
. Daripada kita menggunakan
library upload yang rumit lebih baik kita buat aja simple script seperti ini.

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 <?
        $uploadDir = "uploadDir/";
        // Apabila ada file yang di-upload
        if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
               $uploadFile = $_FILES['myfile'];

               // Extract nama file
               $extractFile = pathinfo($uploadFile['name']);         

               $sameName = 0; // Menyimpan banyaknya file dengan nama yang sama dengan file yg diupload
               $handle = opendir($uploadDir);
               while(false !== ($file = readdir($handle))){ // Looping isi file pada directory tujuan
                       // Apabila ada file dengan awalan yg sama dengan nama file di uplaod
                       if(strpos($file,$extractFile['filename']) !== false)
                         $sameName++; // Tambah data file yang sama
               }              

               /* Apabila tidak ada file yang sama ($sameName masih '0') maka nama file pakai
                * nama ketika diupload, jika $sameName > 0 maka pakai format "namafile($sameName).ext        */
               $newName = empty($sameName) ? $uploadFile['name'] : $extractFile['filename'].'('.$sameName.').'.$extractFile['extension'];

               if(move_uploaded_file($uploadFile['tmp_name'],$uploadDir.$newName)){
                       echo 'File berhasil diupload dengan nama: '.$newName;
               }else echo 'File gagal diupload';
        }
 ?>

Pada halaman yang sama jangan lupa sediakan form-nya.

32
33
34
35
36
<form action="" method="post" enctype="multipart/form-data">
 Pilih File Anda:
<input />
<input value="Upload" />
</form>

Dengan menjalankan script sederhana diatas maka apabila pada server ada nama file yang sama maka file yang akan diupload
akan digantikan dengan format: “namaFile(jumlahFileYangSama).extensionFile”. Contohnya apabila ada server ada nama file
“doc.pdf”, maka file yang baru diupload akan menjadi “doc(1).pdf”, apabila pada proses upload selanjutnya ada file yang
diupload dengan nama “doc.pdf” juga maka file itu akan di-rename dengan nama “doc(2).pdf”, dan seterusnya.

Demo dari script diatas dapat anda lihat disini.

Download script diatas dan test di komputer anda di link ini.

Semoga bisa membantu… ^_^

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