Senin, 24 Januari 2011

Trik Upload PHP Auto Rename

Ok kita langsung saja pada inti pembahasan yaitu bagaimana mengupload file dengan menggunakan php ditambah sedikit trik pengembangan. Upload file merupakan salah satu fasilitas pada web yang kini semakin sering digunakan, file yang ada pada komputer local dapat kita simpan ke dalam directory server yang nantinya dimanfaatkan untuk berbagai keperluan. Dan tentunya setiap bahasa pemrograman web sudah dipastikan memiliki fungsi-fungsi tersendiri untuk melakukan upload file.

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 :

1. Folder direktori yang nantinya akan kita gunakan sebagai tempat untuk menampung hasil dari proses upload. Contoh : saya berinama foldernya “upload”
2. Halaman form.php
3. Halaman action.php

Langkah pertama adalah membuat halaman form.php
Pilih File Anda:


Langkah selanjutnya adalah membuat halaman action.php. scriptnya sebagai berikut :
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 :
Download
Download
Always With US BeaCheater

0 komentar:

Posting Komentar