Aplikasi Upload Image adalah hal yang cukup sering dilakukan pada website yang mengijinkan registered usernya mengganti-ganti fotonya ataupun mengupdate profil halamannya sendiri. Hal yang harus dipertimbangkan pada saat kita memberikan akses upload file ataupun image adalah soal security. Di dalam PHP, ada sebuah function yang bernama ftp_chmod yang dapat digunakan untuk mengubah hak akses terhadap file tertentu. Jadi sebelum sebuah file kita timpa, kita ubah dulu aksesnya menjadi 777, setelah file ditimpa, akses dapat dikembalikan lagi ke mode semula.

Berikut ini adalah contoh script PHP untuk upload file gambar ke server. Kita bisa juga membatasi dimensi dan ukuran dari file.

Kita define dulu ke dalam konstanta sbb.

<?php
//define a maximum size for the uploaded images in Kb
define (“MAX_SIZE1″,”200”);
define (“MAX_SIZE2″,”100”);

//define a default dimension for the uploaded images in pixel
define (“WIDTH1″,”550”);
define (“HEIGHT1″,”150”);
define (“WIDTH2″,”150”);
define (“HEIGHT2″,”100”);
?>

masing2 konstanta akan menyimpan nilai untuk maksimum kapasitas dalam ukuran KiloBytes dan maksimum dimensi dari gambar yang akan kita gunakan.

Kita buat form untuk upload imagenya dulu, contohnya adalah sebagai berikut:

<form name=”frm1″ method=”post” enctype=”multipart/form-data” action=””>
<input name=”image1″ type=”file”>
Max Size: <strong>200</strong> KB – Dimensi W:<strong>550</strong>px H:<strong>150</strong>px <br>
<input name=”upload1″ type=”submit” value=”Upload image”>
</form>

Selanjutnya kita akan menulis script PHPnya yang digunakan untuk upload file gambarnya

<?php
if(isset($_POST[‘upload1’]))
{
//baca nama file dari yang sudah disubmit oleh user
$image=$_FILES[‘image1’][‘name’];
//jika tidak kosong
if ($image!=”)
{
$filename = stripslashes($_FILES[‘image1’][‘name’]);
//ambil ekstensi file lalu dikonversi ke lower case format
$extension = getExtension($filename);
$extension = strtolower($extension);
//jika ekstensinya bukan ekstensi gambar yang kita tentukan, maka kitatidak akan upload filenya
if (($extension != “jpg”) && ($extension != “jpeg”) && ($extension != “png”) && ($extension != “gif”))
{
//cetak pesan kesalahan
echo ‘<h1>Extension tidak dikenal!</h1>’;
$errors=1;
}
else
{
//ambil ukuran image dalam satuan bytes
$size=filesize($_FILES[‘image1’][‘tmp_name’]);
list($file_width, $file_height) = getimagesize($_FILES[‘image1’][‘tmp_name’]);

//jika tidak sesuai dengan dimensi yang ditentukan, kita tolak lagi
if (($file_width != WIDTH1) && ($file_height != HEIGHT1))
{
echo ‘<h1>Ukuran dimensi gambar tidak sesuai!</h1>’;
$errors=1;
}
//bandingkan ukurannya dengan ukuran maksimal, jika lebih besar maka kita tolak lagi
else
{
if ($size > MAX_SIZE1*1024)
{
echo ‘<h1>Ukuran file gambar melebihi limit!</h1>’;
$errors=1;
}
else
{
// set up koneksi
$conn_id = ftp_connect($ftp_server);
// login dengan username dan password
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
// definisikan folder misal di images
$folder = ‘public_html/images’;
// ubah chmod $file ke 777 untuk proses upload
if (ftp_chmod($conn_id, 0777, $folder) !== false) {
echo “$folder chmoded successfully to 777<br>”;
} else {
echo “could not chmod $folder<br>”;
}

//buat nama file gambar yang akan diupload, contoh disini kita menggunakan nama unique dari SESSION
$image_name=$_SESSION[‘id’].’banner.’.$extension;
$newname=”images/”.$image_name;
$copied = copy($_FILES[‘image1’][‘tmp_name’], $newname);
// chmod lagi $file ke 755
if (ftp_chmod($conn_id, 0755, $folder) !== false) {
echo “$folder chmoded successfully to 755<br>”;
} else {
echo “could not chmod $folder<br>”;
}

// putuskan koneksi
ftp_close($conn_id);
if (!$copied)
{
echo ‘<h1>Copy tidak berhasil!</h1>’;
$errors=1;
}
}
}
}
}
else
{
echo ‘<h1>File belum dipilih!</h1>’;
$errors=1;
}
}

//Jika tidak error, kita cetak pesan sukses
if(isset($_POST[‘upload1’]) && !$errors)
{
echo “<h1>File Berhasil diupload! </h1>”;
}
?>

2 Comments on Upload Image

  1. AmazingLight says:

    wah… infonya sangat membantu saya, saat ini saya sedang menyusun skripsi yang memerlukan skrip upload file gambar…
    terimakasih banyak… 🙂