Home > PHP, Tips & Trick > Trick Upload PHP: Rename file sebelum diupload apabila ada file yang sama pada server

Trick Upload PHP: Rename file sebelum diupload apabila ada file yang sama pada server

December 13th, 2008 1,376 views Leave a comment Go to comments

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… ^_^

Categories: PHP, Tips & Trick Tags: ,
(13 votes, average: 4.08 out of 5) KurangBiasaLumayanBagusLuar Biasa
Loading ... Loading ...
  1. December 19th, 2008 at 09:19 | #1

    Kalau disimpan dengan tambahan tanggal misal: header-12-08-2008.jpg

  2. December 19th, 2008 at 10:07 | #2

    “Kalau disimpan dengan tambahan tanggal misal: header-12-08-2008.jpg”
    —————————————————————————————————-
    Bisa, tinggal sebelum baris ke-17 tambahan syntax

    $extractFile['filename'] = $extractFile['filename'] . date('d-m-Y');
  3. dhewoy
    January 12th, 2009 at 03:38 | #3

    klo misal file yang diupload mengandung spasi ditengah knapa dia gak mau ke upload..misal namanya “php mysql.pdf” . bagaimana cara menganganinya..???

  4. January 12th, 2009 at 10:32 | #4

    aneh, aku tadi coba kok bisa ya??
    mungkin file mas itu kegedean ato permission denied (klo mas pake linux)

  5. dhewoy
    January 12th, 2009 at 13:37 | #5

    thx, dah bisa ko maz admin mungkin tadi malem karena ngantuk jadi gak bisa..pas dicoba pagi…bisa..thx.

  6. Arief
    April 6th, 2009 at 17:16 | #6

    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 ?

  7. April 10th, 2009 at 22:55 | #7

    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.

  8. January 9th, 2010 at 22:13 | #8

    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,,

  1. No trackbacks yet.