Seringkali saya bertanya pada diri sendiri “apabila terdapat 1 file yang diupload ke server, sedangkan terdapat file dengan nama yang sama pada server hosting, bagaimana caranya agar file yang sudah ada dengan nama yang sama tidak ter-replace/tertimpa oleh file yang baru diupload”.
Dan sekarang setelah mencari dan hunting diberbagai situs yang membahas tentang web programming akhirnya saya menemukan jawabannya.
Jawabannya adalah kita perlu melakukan sebuah validasi sebelum file di kirim ke server. Validasi itu berupa pengecekan apakah pada directory tujuan terdapat nama file yang sama dengan file yang akan kita upload.
Ok sekarang kita coba langsung kepada scriptnya saja. Yang perlu kita sediakan adalah :
- Folder direktori yang nantinya akan kita gunakan sebagai tempat untuk menampung hasil dari proses upload. Contoh : saya berinama foldernya “upload”
- Halaman form.php
- Halaman action.php
Langkah pertama adalah membuat halaman form.php
<form action="action.php" method="post" enctype="multipart/form-data">
Pilih File Anda:
<input type="file" name="myfile" />
<input name="MAX_FILE_SIZE" type="hidden" id="MAX_FILE_SIZE" size="30000" />
<input type="submit" value="Upload" />
</form>
Langkah selanjutnya adalah membuat halaman action.php. scriptnya sebagai berikut :
$uploadDir = "../upload/";
// Apabila ada file yang di-upload
if(is_uploaded_file($_FILES['myfile']['tmp_name'])){
$uploadFile = $_FILES['myfile'];
// Extract nama file
$extractFile = pathinfo($uploadFile['name']);
$size = $_FILES['myfile']['size']; //untuk mengetahui ukuran file
$tipe = $_FILES['myfile']['type'];// untuk mengetahui tipe file
//Dibawah ini adalah untuk mengatur format gambar yang dapat di uplada ke server.
Anda bisa tambahakan jika ingin memasukan format yang lain tergantung kebutuhan anda.
$exts =array('image/jpg','image/jpeg','image/pjpeg','image/png','image/x-png');
if(!in_array(($tipe),$exts)){
echo 'Format file yang di izinkan hanya JPEG dan PNG';
exit;
}
// dibawah ini script untuk mengatur ukuran file yang dapat di upload ke server
if(($size !=0)&&($size>30000)){
exit('Ukuran gambar terlalu besar’);
}
$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 script di atas saya hanya mengkhususkan file yang di upload adalah imang/gambar. Jika anda ingin mengupload file dengan format yang lain silahkan anda ganti baris berikut :
$exts =array('image/jpg','image/jpeg','image/pjpeg','image/png','image/x-png');
if(!in_array(($tipe),$exts)){
echo 'Format file yang di izinkan hanya JPEG dan PNG';
exit;
}
Dengan menjalankan script sederhana diatas maka jika pada server terdapat nama file yang sama maka file yang akan diupload akan digantikan dengan format: namaFile(jumlahFileYangSama).extensionFile”. Contohnya apabila di dalam server terdapat nama file “doc.pdf”, maka file yang akan diupload nantinya akan menjadi direname secara otomaris 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 begitu seterusnya.
Silahkan download script lengkapnya di sini :
http://www.ilmuwebsite.com/submit/trik_upload_byimran.zip
No comments:
Post a Comment