Skrip PHP untuk Upload dan Hapus File Gambar

1935

Untuk meng-upload file gambar (jpg, jpeg, pjpeg, png, gif) kita gunakan fungsi move_uploaded_file(string path, string new_path), dan untuk menghapus file gambar yang telah di-upload tersebut digunakan fungsi unlink(string filename).  Nantinya file gambar akan disimpan di direktori/folder ‘images’ dan data gambar (file_name, ukuran, direktori dan deskripsi gambar) akan disimpan di tabel ‘file_gambar’. Cara membuat folder dengan skrip PHP dapat anda lihat di ‘Membuat Direktori atau Folder Baru di Server Menggunakan PHP’…

Untuk membuat tabel tempat menyimpan informasi gambar yang akan di upload, copy dan paste sintak SQL berikut di phpMyAdmin Run SQL query/queries on database database_ku.

CREATE TABLE database_ku.file_gambar (

file_id INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,

file_name VARCHAR( 50 ) NOT NULL ,

ukuran INT( 10 ) NOT NULL ,

direktori VARCHAR( 50 ) NOT NULL ,

deskripsi TEXT NOT NULL

) ENGINE = MYISAM

Berikut potongan skripnya:

Form upload gambar:

<form action=”upload-hapus.php?act=upload” method=”post” enctype=”multipart/form-data”>

<p><input name=”fgambar” type=”file” id=”fgambar” /></p>

<p>Tipe file yang diperbolehkan jpg, jpeg, pjpeg, png atau gif.</p>

<p>Deskripsi:</p>

<p><textarea name=”deskripsi” cols=”38″ rows=”5″ id=”deskripsi”></textarea></p>

<input type=”hidden” name=”direktori” id=”direktori” value=”images” />

<p><input name=”upload” type=”submit” value=”Upload” id=”upload” /></p>

</form>

Untuk menampilkan gambar yang telah di upload:

<?php

//tampilkan gambar tersedia

$SQL =”SELECT * FROM file_gambar”;

$qryGambar =@mysql_query($SQL);

$no=0;

while($row =@mysql_fetch_array($qryGambar)):

$no++;

$conf =”Anda yakin akan menghapus gambar “.$row[‘file_name’];

echo ‘<p>No : ‘.$no.'</p>’;

echo ‘<p>Nama : ‘.$row[‘file_name’].’ | <a href=”upload-hapus.php?act=hapus&id=’.$row[‘file_id’].'” onclick=”return confirm(\’Anda yakin akan menghapus gambar ‘.$row[‘file_name’].’\’);”>Hapus</a></p>’;

echo ‘<p>Ukuran : ‘.$row[‘ukuran’].’ bytes</p>’;

echo ‘<p><img src=”‘.$row[‘direktori’].’/’.$row[‘file_name’].'” /></p>’;

echo ‘<p>Deskripsi : ‘.$row[‘deskripsi’].'</p><hr />’;

endwhile;

if($no==0){

echo “<p>Gambar belum tersedia.</p>”;

}

?>

Skrip untuk meng-upload gambar:

<?php

include “koneksi.php”; //koneksi dengan database

if($_GET[‘act’]==’upload’):

$tipe =$_FILES[‘fgambar’][‘type’];

if( $tipe != “image/jpg” AND

$tipe != “image/jpeg” AND

$tipe != “image/pjpeg” AND

$tipe != “image/png” AND

$tipe != “image/gif”){

echo ‘<p><b>Upload Gagal</b></p>’;

echo ‘<p>Tipe file yang diperbolehkan jpg, jpeg, pjpeg, png atau gif.</p>’;

echo ‘<p><a href=”index.php”>ULANGI</p></p>’;

}else{

$file_name =$_FILES[‘fgambar’][‘name’];

$ukuran =$_FILES[‘fgambar’][‘size’];

$direktori =$_POST[‘direktori’];

$deskripsi =$_POST[‘deskripsi’];

//Cek gambar

$SQL =”SELECT file_name FROM file_gambar WHERE file_name=’$file_name'”;

$qGambar =@mysql_query($SQL);

if(count(@mysql_fetch_array($qGambar)) > 1){

echo ‘<p><b>Upload Gagal</b></p>’;

echo ‘<p>Gambar telah tersedia</p>’;

echo ‘<p><a href=”index.php”>KEMBALI</p></p>’;

}else{

//upload gambar

move_uploaded_file($_FILES[‘fgambar’][‘tmp_name’],$direktori.’/’.$file_name);

//simpan data gambar

@mysql_query(“INSERT INTO file_gambar

SET file_name =’$file_name’,

ukuran =’$ukuran’,

direktori =’$direktori’,

deskripsi =’$deskripsi'”);

header(‘location:index.php’);

}

}

endif;

?>

Skrip untuk meng-hapus gambar:

<?php

if($_GET[‘act’]==’hapus’):

//pilih gambar

$id =$_GET[‘id’];

$SQL =”SELECT * FROM file_gambar WHERE file_id=’$id'”;

$qGambar =@mysql_query($SQL);

$row =@mysql_fetch_array($qGambar);

//hapus gambar

if(file_exists($row[‘direktori’].’/’.$row[‘file_name’]))

unlink($row[‘direktori’].’/’.$row[‘file_name’]);

//hapus data gambar

@mysql_query(“DELETE FROM file_gambar WHERE file_id=’$id'”);

header(‘location:index.php’);

endif;

?>

Jika gambar di hapus akan tampil konfirmasi seperti ini:

konfirmasi-hapus

Demo Skrip

Skrip selengkapnya dapat di download di sini.

–SELAMAT MENCOBA–

  • thanks buat infonya..

  • PHP Newbie

    Thanks banget . . .

  • mei

    makasih……….infonya bermanfaat
    :))

  • Dewa Raija

    Terimakasih telah berbagi tutor, dan saya sudah coba, bagus sekali dan mudah untuk dimodofikasi.

    BTW: Saya suka kata mutiaranya.

  • muciz

    mas klo kga bisa gmna ya so sya lgi adha proyek nie hehehehehe

  • mas bisa bantuin gak aku da tugas ni suruh bikin web kaya di webnya gunadarma staffsite jadi membuat profil dosen + ntar da materi kuliah yang bisa didownload…klo mas sempet bikinin tolong kirim ke emailku ya mas!!!
    suwarnooke@yahoo.com

  • ardy

    Mkasih ya………..

  • tian

    thanks untuk infonya..sangat bermanfaat!
    🙂

  • makasih banget skripnya. running 100%

  • Terimakasih, running well, izin copas ya

  • nonickname

    kgk usah copas kale tinggal download ajha…..!!!!!!

  • terima kasih kakak…

  • keren ni bang,,bisa bener2 nghapus dr directory.. 😀

  • buat update gmana broo?

    • buat update skripnya sama aja, cuma file sebelumnya harus dihapus terlebih dahulu sebelum data file di table database di ‘DELETE’. Silahkan gunakan perintah ‘unlink(filePath)’ untuk menghapus file…

  • budi

    thanks…
    sangat membantu belajar php… 😀

  • Aprill

    gan, untuk mengetahui bahwa file itu adalah benar2 file gambar gimana? untuk mengantisipasi jika ada file bukan gambar tapi diupload dengan merubah eksstensi file tersebut jadi jpg. . .

    • gunakan “$tipe =$_FILES[‘fgambar’][‘type’]” untuk membatasi file yang boleh diupload..

  • Adi VM

    ketika penghapusan, muncul ini gan
    Warning: unlink(/) [function.unlink]: Permission denied in C:\xampp\htdocs\upload-gambar\upload-hapus.php on line 57
    cara ngatasinnya gmn gan ?? ditunggu jawabannya. Thanxz..

  • zack

    mantap

  • ojunz

    mantap, boss gimana cara membatasi ukuran fotoya

  • karyo

    mantep,, akhirnya saya nemu yg saya cari,, thanks min,,

  • hanif

    koq gambarnya gak tampil ya…pake xammp 3.2