Beberapa artikel tentang membuat script upload dengan PHP telah saya bahas di blog ini. Seperti membuat single file upload, multiple file upload, sampai dengan upload download file dengan batasan hak akses.
Nah… dalam artikel-artikel tersebut, memungkinkan user mengupload file
apapun alias tidak ada batasan jenis file atau extensionnya.
Yang menjadi masalah selanjutnya adalah, bagaimana cara membuat
script untuk membatasi atau memfilter extension file yang diupload,
misalnya hanya file image (.bmp, .jpg, atau .gif) saja yang boleh
diupload? Inilah yang akan kita bahas dalam artikel ini.
Sebenarnya konsep untuk memfilter extension file yang diupload ini
mudah. Konsepnya adalah pertama kita membuat list atau daftar extension
file yang boleh diupload terlebih dahulu. Daftar ini bisa berupa array,
misalnya:
1.
$extensionList
=
array
(
"jpg"
,
"bmp"
,
"gif"
);
1.
$fileName
=
$_FILES
[
'userfile'
][
'name'
];
Setelah kita baca nama filenya, selanjutnya kita lakukan explode atau memecah nama file tersebut berdasarkan karakter dot (.). Secara umum, nama file adalah berbentuk ‘XXXXX.YYY‘ dengan ‘XXXXX‘ adalah nama filenya, dan ‘YYY‘ adalah extensionnya.
1.
$pecah
=
explode
(
"."
,
$fileName
);
1.
$ekstensi
=
$pecah
[1];
in_array($ekstensi, $extensionList)
.
Function ini akan nilai TRUE jika extension file yang akan diupload
terdapat dalam daftar extension yang diperbolehkan. Dengan demikian
proses upload sendiri baru akan dijalankan bila nilai in_array()
ini adalah TRUE. Sedangkan bila nilainya FALSE maka upload tidak dijalankan.1.
if
(in_array(
$ekstensi
,
$extensionList
))
2.
{
3.
// proses upload dijalankan
4.
}
5.
else
6.
{
7.
// proses upload tidak dijalankan
8.
}
form.html
1.
<
form
enctype
=
"multipart/form-data"
action
=
"upload.php"
method
=
"POST"
>
2.
<
input
type
=
"hidden"
name
=
"MAX_FILE_SIZE"
value
=
"30000000"
/>
3.
Pilih File : <
input
name
=
"userfile"
type
=
"file"
>
4.
<
input
type
=
"submit"
name
=
"submit"
value
=
"Upload"
/>
5.
form
>
upload.php
01.
02.
03.
$extensionList
=
array
(
"bmp"
,
"jpg"
,
"gif"
);
04.
05.
$fileName
=
$_FILES
[
'userfile'
][
'name'
];
06.
$pecah
=
explode
(
"."
,
$fileName
);
07.
$ekstensi
=
$pecah
[1];
08.
09.
// nama direktori upload
10.
$namaDir
=
'data/'
;
11.
12.
// membuat path nama direktori + nama file.
13.
$pathFile
=
$namaDir
.
$fileName
;
14.
15.
if
(in_array(
$ekstensi
,
$extensionList
))
16.
{
17.
// memindahkan file ke temporary
18.
$tmpName
=
$_FILES
[
'userfile'
][
'tmp_name'
];
19.
20.
// proses upload file dari temporary ke path file
21.
if
(move_uploaded_file(
$_FILES
[
'userfile'
][
'tmp_name'
],
$pathFile
))
22.
{
23.
echo
"File berhasil diupload."
;
24.
}
25.
else
26.
{
27.
echo
"File gagal diupload."
;
28.
}
29.
}
30.
else
echo
"File yang diupload bukan file image"
;
31.
32.
?>
Mudah bukan membuatnya? OK deh.. mudah-mudahan bermanfaat ya
artikelnya. Ditunggu aja deh artikel-artikel heboh lain tentang
scripting PHP di blog ini, yang belum pernah dibahas di buku manapun di Indonesia
EmoticonEmoticon