Trick Upload PHP: Rename file sebelum diupload apabila ada file 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 type="file" name="myfile" /> <input type="submit" 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… ^_^


Chandra Jatnika

Kalau disimpan dengan tambahan tanggal misal: header-12-08-2008.jpg
“Kalau disimpan dengan tambahan tanggal misal: header-12-08-2008.jpg”
—————————————————————————————————-
Bisa, tinggal sebelum baris ke-17 tambahan syntax
klo misal file yang diupload mengandung spasi ditengah knapa dia gak mau ke upload..misal namanya “php mysql.pdf” . bagaimana cara menganganinya..???
aneh, aku tadi coba kok bisa ya??
mungkin file mas itu kegedean ato permission denied (klo mas pake linux)
thx, dah bisa ko maz admin mungkin tadi malem karena ngantuk jadi gak bisa..pas dicoba pagi…bisa..thx.
Lha trus agar file yang telah berhasil diupload tadi langsung dapat di preview gimana mas ?
Catatan : File tadi tidak masuk ke databse lho.
Gimana ya mas ?
P. Chandra (T-10), Sebelumnya saya ucapkan terimaksih banyak atas semua artikel-artikelnya yang saya rasakan sangat bermanfaat sekali semoga dengan segala kebaikan Bp. untuk membagikan keilmuannya saya berdoa agar Bp. tetap sehat dan dilimpahkan lagi ilmu pengetahuannya lebih dari pada yang telah Bp. bagikan, terimakasih banyak.
tank’s ya mas infonya,,berharga banget buat saya,,kebetulan muter-muter cari artikelnya baru di blog anda saya dapet..hehee…salam kenal mampir di blog sederhana saya http://ahligiza.blogspot.com ,,kalau boleh tukeran link ya mas,,,terimakasih,,