Seringkali kita membuat kode (PHP) untuk membuat upload file seperti di bawah ini :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // Folder tempat isi file upload $dir = "upload/" ; // Nama File yang diupload $filename = $_FILES['upload']['name'] ; // Spesifikasi lokasi file yang akan diupload $target_dir = $dir . $filename ; // upload if(move_uploaded_file($_FILES['upload']['tmp_name'], $target_dir)) return TRUE ; else return FALSE ; |
Kode di atas memiliki kelemahan, salah satunya adalah jika diupload file berkas.odt kedalam folder “upload“, dimana sebelumnya di dalam folder upload telah ada file berkas.odt, maka berkas.odt yang lama akan te-replace oleh berkas.odt yang baru. Mungkin tidak akan ada masalah jika file-file tersebut serupa dan sama. Tapi jika file-file tersebut serupa tapi tidak sama (maksudnya nama file sama tetapi isi atau konten di dalamnya berbeda), tentu proses pengoleksian file-file yang telah diupload menjadi kacau, dan pasti kode di atas salah.
Untuk itu perlu diperbaiki kode program di atas untuk menghindari terjadi duplikasi nama file saat proses upload.
Berikut contoh kode perbaikannya :
1 2 3 4 5 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 32 33 | // Folder tempat isi file upload $dir = "upload/" ; // Nama file yang diupload $filename = $_FILES['upload']['name'] ; // Spesifikasi lokasi file yang akan diupload $target_dir = $dir . $filename ; /* * Gunakan fungsi file_exists() untuk memeriksa apakah * file X telah ada sebelumnya di folder Y */ if(file_exists($target_dir)) { /* * Iterasi sampai 100 dg asusmi file duplikasi (bernama sama) itu maksimal 100, * lebih dari itu ... TERLALU (mode on Bang Rhoma) :-p */ for($i = 1; $i < 100; $i++) { $target_dir = $dir . $i . '-' . $filename ; /* * Misal file berkas.odt ada di folder sebelumnya, * maka file berkas.odt yang baru akan direname menjadi 1-berkas.odt */ if(!file_exists($target_dir)) break; } } // upload if(move_uploaded_file($_FILES['upload']['tmp_name'], $target_dir)) return TRUE ; else return FALSE ; |
Selamat mencoba. CMIIW.


wew… tadi malam akau sedang berfikir tentang ini… eh.. ternyata !!!… thanks atas sharing infonya…
hmm… kalo gw malah ikutan cara id*s.. nama file nya d encrypt berdasarkan nama, ma waktu :p … kira2 lebih efektif mana ya om?
gak ada masalah, hanya t’kadang saat meminta log lebih baik nama asli file terlampirkan. dan satu lagi, enkriptnya jgn kepanjangan , ntar banyak ngabisin byte memory jika di simpan di SQL . (dengan asumsi nama asli juga gak panjang … :piss: )
hmm,, sep2 .. kalo encrypt nya sih standar lah.. 32 digit :p … btw, ini reply plugin nya pake paan bos :p ….
Wordpress Thread Comment
sangat membantu