Langsung ke isi website
Langsung ke navigasi

Artikel PHP/MySQL

  • Home
    • » PHP/MySQL
      • » Upload file ke server dengan menggunakan PHP

Upload file ke server dengan menggunakan PHP

Oct 18 2007

Ditulis oleh Dhimas Ronggobramantyo
Kategori: PHP/MySQL
Dibaca 20880 kali

Langsung lihat komentar

Kali ini saya akan membahas tentang upload file menggunakan PHP. Tentu menyenangkan jika pengguna website anda dapat melakukan upload gambar, dokumen atau video kedalam website anda. Artikel ini akan menerangkan cara mengupload file keserver anda dengan PHP.

PHP membuat semuanya menjadi lebih mudah dalam menangani upload file. Untuk membuat form upload pastikan kita menyertakan atribut enctype="multipart/form-data" dan pastikan methodnya adlaha post. Oke langsung saja kita lihat kode HTML berikut ini:

<form method="post" action="<?=$PHP_SELF?>" enctype="multipart/form-data">
<input type="file" name="myfile">
<input type="submit" name="Submit" value="Submit">
</form>

Seperti yang kita lihat, kita me,mberi nama pada field upload kita "myfile". Nama ini sangat penting, karena ketika file telah diupload maka file tersebut otomatis diberi nama yang unik dan disimpan di temporary direktori. Tentu saja url path ke filenya bisa diakses, karena otomatis akan muncul variabel global yang memiliki nama yang sama dengan field upload kita, dalam hal ini myfile. Akan ada 4 variabel baru yang semuanya diawali dengan myfile dan diikuti dengan garis bawah (underscore), yaitu:

  • $myfile. Variabel ini berisi informasi lokasi file di server.
  • $myfile_name. Nama file asli ketika masih dikomputer klien.
  • $myfile_size. Ukuran dari file (dalam satuan bytes).
  • $myfile_type. Tipe file.

Upload sederhana

Langsung saja kita coba contoh upload berikut ini, simpan dengan nama upload.php:

<html>
<head>
<title>Upload file</title>
</head>
<body>
<?
if ( isset( $upload ) ) {
    echo "Lokasi File: $myfile<br>";
    echo "Nama File: $myfile_name<br>";
    echo "Ukuran: $myfile_size bytes<br>";
    echo "Tipe File: $myfile_type<br>";
    copy ( $myfile, "$myfile_name") or die ("Gagal mengupload");
}
?>
<form enctype="multipart/form-data" action="<?=$PHP_SELF?>" method="post">
<input type="file" name="myfile"><br>
<input type="submit" value="upload" name="upload">
</form>
</body>
</html>

Ketika tombol upload ditekan, maka url path file tersebut akan disimpan di variabel $myfile dan kita tampilkan dibrowser. Kita juga menampilkan nama file yang tersimpan pada variabel $myfile_name, ukuran file di variabel $myfile_size dan tipe file di variabel $myfile_type.

Kita menggunakan fungsi copy() untuk memindahkan file dari komputer kita direktori sementara di server kita. Fungsi copy() membutuhkan dua argumen yaitu lokasi awal file dan lokasi baru diserver. Jika kita ingin mengupload nya ke suatu folder diserver (katakanlah kita simpan difolder images) maka kita perlu mengubahnya menjadi: copy ( $myfile, "images/$myfile_name")

Upload yang lebih kompleks

Sekarang mari kita coba membuat fungsi upload yang jauh lebih rumit. Misalkan kita ingin membuat fungsi upload dimana file yang diupload harus file jpg, dan ukurannya tidak boleh lebih besar dari 100Kb serta panjang dan lebar gambar tidak boleh lebih dari 100 piksel. Kelihatannya rumit kan? Mari kita coba kode berikut dan simpan dengan nama upload2.php:

<html>
<head>
<title>Upload file</title>
</head>
<body>
<?
if ( isset( $upload ) ) {
echo "Lokasi File: $myfile<br>";
echo "Nama File: $myfile_name<br>";
echo "Ukuran: $myfile_size bytes<br>";
echo "Tipe File: $myfile_type<br>";
if ( $myfile_type == "image/pjpeg" ) {
    if ($myfile_size <= 102400 ) {
        list($width, $height) = @getimagesize("$myfile");
        if ( $width <= 100 && $height <= 100 ) {
            copy ( $myfile, "$myfile_name") or die ("Couldn't copy");
            echo "File anda telah sukses diupload";
        } else {
            echo "Ukuran panjang dan lebar gambar terlalu besar";
        }
    } else {
        echo "Ukuran file tidak boleh lebih dari 100Kb";
    }
} else {
    echo "File harus JPG!!";
}
}
?>
<form enctype="multipart/form-data" action="<?=$PHP_SELF?>" method="post">
<input type="file" name="myfile"><br>
<input type="submit" value="upload" name="upload">
</form>
</body>
</html>
PHP tidak memiliki kemampuan untuk membuat progress bar ketika file diupload. Karena PHP tidak dapat mengetahui berapa bagian yang telah diupload dan berapa yang belum. Kita perlu menggunakan CGI. Tetapi entah dengan PHP terbaru, siapa tau sudah memiliki class atau fungsi untuk membuat progress bar.

Pertama-tama yang kita lakukan adalah mengecek apakah file kita jpg dengan cara mengecek $myfile_type. Jika hasil dari variabel $myfile_type adalah "image/pjpeg", maka bisa dipastikan bahwa file kita adalah jpg. Berikutnya kita melakukan pengecekan apakah ukuran filenya tidak lebih besar dari 100Kb dengan mengecek variabel $myfile_size. Ingat bahwa 100Kb = 102400Bytes(Rumusnya 1Kb=1024Bytes). Kemudian kita menggunakan fungsi getimagesize() untuk menemukan panjang dan lebar dari gambar yang kita simpan dengan array menggunakan fungsi list(). Kemudian kita cek panjang dan lebar dari gambar apakah tidak lebih dari 100 piksel. Jika semuanya terpenuhi maka filenya tinggal kita copy. Cukup mudah kan? gampang... anda pasti bisa.

Ingat, berhati-hatilah dalam membuat upload file. Saringlah file yang mau diupload, jika anda hanya menginginkan orang mengupload file jpg ya anda harus cek apakah file yang diupload benar-benar file jpg. Bagaimana jika nanti yang diupload malah virus? karena itu waspadalah, waspadalah!!
Simpan artikel ini ke: Digg it Del.icio.us Furl Reddit

Komentar [53]

1
Komentar Dikirim oleh Rukma pada 24 Oktober 2007 09:34:32 WIB

Alangkah bagusnya jika variabel yang digunakan untuk Kode Program menggunakan variebl global ^___^

2
Komentar Dikirim oleh Dhimas pada 24 Oktober 2007 05:09:05 WIB

Yap, dalam contoh saya tidak menggunakan variabel global karena semuanya berada di satu file php. Tetapi jika kita menggunakan fungsi atau menginclude dari file php lain, maka wajib pake variable global smile

3
Komentar Dikirim oleh Julian pada 14 November 2007 09:06:17 WIB

saya masih belum mengerti fungsi dari
enctype="multipart/form-data"

Bisa tolong dijelaskan?

4
Komentar Dikirim oleh ade pada 28 November 2007 12:31:09 WIB

bangus, makasih ya info nya....
http://yapensa.100webspace.net

5
Komentar Dikirim oleh ali(nurul hidayah komputer polewali mandar) pada 13 Desember 2007 10:12:59 WIB

saya sangat terbantu dengan info ini. terima kasih atas infonya

6
Komentar Dikirim oleh suka komentar pada 21 Desember 2007 12:52:12 WIB

Ah kayaknya Biasa saja, mending cari di library php aja kayak kalau pake bahasa Basic carinya di MSDN, lebih cepat kalau mau cari suatu fungsi. Tapi yang buat template website ini saya kasih ++ sama dia, soalnya design nya bagus

7
Komentar Dikirim oleh vera pada 07 Januari 2008 04:06:34 WIB

wah untuk saya pemula, info program ini sangat manfaat sekali, saya mau tanya kalau dilokal (dg joomla) program uploadnya berfungsi dengan baik tapi setelah di hosting (dg joomla) programnya tidak berhasil, tidak ada error massege tidak ada dan filenya tidak ada difoldernya....mohon info lebih lanjutyah...txs (vera@indovic.com)

8
Komentar Dikirim oleh kholid pada 15 Januari 2008 03:08:09 WIB

thanks ya, ditambah juga script untuk nama pengirim dan komentar.

9
Komentar Dikirim oleh Devi pada 15 Januari 2008 05:46:11 WIB

Thanks atas infonya.
Saya punya masalah dengan memasukkan data >500M Apa bisa membantu saya? Karena saya beberapa x memasukan data besar smp dgn 1GB tidak bisa

10
Komentar Dikirim oleh hendra pada 18 Januari 2008 10:45:04 WIB

saya mau tanya bagaimana sebuah php itu bisa di upload langsung di internet dan apakah perlu domain untuk bisa memliki web sendiri dari sebuah php..
tolong kasih tau caranya dari program sampai upload ke linknya............

11
Komentar Dikirim oleh die pada 26 Januari 2008 03:10:41 WIB

thanq banget bos ... banyak banget manfaat yang bisa diambil dari web ini ... tutorialnya bagus2...

terus menulis dan bagikan ilmu anda ...
itung2 nabung buat akherat nanti ...

thanq banget sekali lagi

12
Komentar Dikirim oleh Dhimas pada 09 Februari 2008 11:01:56 WIB

to Devi

Kalau filenya segede itu ya harus atur setting php.ini nya untuk naikin limit filenya. Kira2 yang perlu diatur upload_max_filesize, max_input_time, memory_limit, max_execution_time sama post_max_size

13
Komentar Dikirim oleh yapensa pada 11 Februari 2008 04:34:16 WIB

yapensa.com situs informasi kota depok hasil karya anak depok,,,,,,,,

14
Komentar Dikirim oleh agung sw pada 18 Februari 2008 09:10:19 WIB

jeli sekali anda meraih peluang PHP di Internet. Hal ini dapat membantu saya untuk mempermudah akses web saudara untuk berbagi ilmu. Thanks...ya . Web anda sangat bermanfaat. Semoga Anda mendapat pahala di kehidupan mendatang.

15
Komentar Dikirim oleh siapa pada 22 Maret 2008 11:14:33 WIB

Maturnuwun, lama mutrmuter2 nyari fungsi php yang bisa ngambil ukuran image, eh ketemunya di sini!..
thx. Dhimas!

16
Komentar Dikirim oleh gakky pada 25 Maret 2008 12:24:28 WIB

wah susah2 nyari source code upload file luar negri ternyata yg versi indo juga ada hehe. mau tny ya om, klo udah upload video tros mau di play di halaman web kita gmn caranya? tipe video apa aja yg bisa di play di halaman web tsb?
mohon petunjuk ya..

17
Komentar Dikirim oleh thariq pada 02 Mei 2008 02:42:12 WIB

makasi mas,,ini berguna buat saya!!
thoriqgrady@yahoo.com

18
Komentar Dikirim oleh p1ur06@yahoo.com pada 05 Mei 2008 08:59:50 WIB

tak cba kok gak bsa ya ...
pa hrus nyeting di php.ini nya gak?

19
Komentar Dikirim oleh Bambang pada 08 Mei 2008 05:36:11 WIB

ada apa saja jenis file yang dpat di upload ? contoh : image/jpeg,bisa tau list file typenya ?
jadi seandainya kita hendak menentukan file type yang boleh diupload cuma,rar,jpeg,dan bmp saja.Thx

20
Komentar Dikirim oleh BUJANG pada 13 Mei 2008 09:41:38 WIB

terima kasih atas artikel yang telah di muat dengan artikel ini saya menjadi gamblang tentang apa CSS itu,moga terus update terus

21
Komentar Dikirim oleh uniq pada 16 Juni 2008 01:10:15 WIB

ehm...bisa liat sebentar seperti anda bisa bantu saya. yang masih katrok banget ma pemrograman pi kepingin bisa gimna ya?heheheh..q punya pertnyaan.. gmn caranya menghub. php dengan mysqlkal q pake wamp?

22
Komentar Dikirim oleh aRini pada 30 Juni 2008 10:26:29 WIB

wah,,thanx atas artikelnya,,
sy pemula,,awalnya sy bingung untuk alamat $myfile,,sy br inget kalo alamat itu ada di server..jd y ga ada di klien,,tapi saya msh bngung gmana caranya agar klien dpt membuka file yang telah diupload ya??
tengkyu mas dimas...

23
Komentar Dikirim oleh ANTON SUTIONO pada 14 Juli 2008 08:03:03 WIB

ASSL!!!
waahhh!!! setelah saya cari2 di google akhirnya saya menemukan web yg tpat untuk memperdalam pengthuan saya mengenai pembuatan website. ehmmm... boleh ga saya minta artikel mengenai koneksi PHP ke database conth: mysql? o y saya pengen memperdalam keilmuan saya di bidang web programing langkah awal yang harus saya jalanin apa saja y?
tlng krim ke email saya
antmail.87@gmail.com
mengenai web ini oke bangetttt deh penilaian sy 2 jempol deh eh eh eh 4 jempollllll
salam kenal Anton S.
Wassll....

24
Komentar Dikirim oleh adjie pada 01 Agustus 2008 09:45:35 WIB

mz aq nyoba upload2 yg lbh kompleks knpa tdk bsa yaa, trs aq mncaoba memodifikasi tp tdk bsa

mohon pencerahannya

25
Komentar Dikirim oleh sabitha pada 11 September 2008 12:57:23 WIB

wah artikel lumayan juga. tp bagaimana kl kita mau mengupload ke file hosting yg membutuhkan kita utk login (kitaupload.com, indowebster, rapidshare.com, dll). tolong bari petunjuk ke sabitha.syifa@gmail.com

26
Komentar Dikirim oleh didin pada 14 Oktober 2008 01:55:01 WIB

"Yap, dalam contoh saya tidak menggunakan variabel global karena semuanya berada di satu file php. Tetapi jika kita menggunakan fungsi atau menginclude dari file php lain, maka wajib pake variable global"

meskipun dalam satu file, kalo settingan register_globalnya di off tetep gak jalan, mas.. bukankah variabel global itu fungsinya untuk mengatur lalu lintas variable, mirip2 kayak lampu merah gitu... ;-)

salut.. bagus webnya...

http://blog.shofura.com

27
Komentar Dikirim oleh fulan pada 09 Desember 2008 12:44:27 WIB

asli keren.terimakasih ANda telah membanTu kelancaran skripsi saya.

28
Komentar Dikirim oleh rayhangypsum pada 23 Desember 2008 10:57:31 WIB

sebelumnya saya mohon maaf karena telah mengganggu kegiatan Anda.
Saya hanya inginmenanyakan, bagaimana cara kita membuat formulir yang bisa langsung dikirimkan ke email kita ?
seperti contoh yang aku buat di http://keunggulangypsum.webs.com.
Tapi isian formulir dari temen - temen gak ada yang masuk.
perlu diketahui...saya memasukan website menggunakan HTML.
terima kasih

29
Komentar Dikirim oleh Yudhi pada 27 Desember 2008 12:08:15 WIB

Web Anda bagus banget mudah-mudah bisa lebih meningkatkan kreatifitasnya

30
Komentar Dikirim oleh NN pada 08 Maret 2009 03:03:51 WIB

baGUs kAnG......

31
Komentar Dikirim oleh rico pada 10 Maret 2009 10:11:52 WIB

bagaimana caranya mensetting login untuk dimasukkan ke dalam login

32
Komentar Dikirim oleh sekar pada 10 Maret 2009 10:12:45 WIB

masssssssssssss kngennnnnnnnn neeeeeeeeeeee

33
Komentar Dikirim oleh allisya pada 10 Maret 2009 10:15:17 WIB

entar lgi shutting kejar striping neeee
jangan lupa nonton sinetron allisha jngan lpa nonton ya.....!!!

34
Komentar Dikirim oleh melati pada 10 Maret 2009 10:17:03 WIB

duh cpek hbis shutting,kangen lagi ma marvel

35
Komentar Dikirim oleh arif pada 19 Maret 2009 04:16:42 WIB

trim atas penjelasannya,

36
Komentar Dikirim oleh setya pada 07 Mei 2009 02:58:11 WIB

kl yg diupload ke database file lain misal document (doc) terus kita ingin menampilkan file ISI tsb sehingga bisa kita baca dibrowser gimana bang?...soale yg sehing dicontohin file gambar trs.....
tx

37
Komentar Dikirim oleh januar pada 16 Mei 2009 12:11:38 WIB

mau tanya ne..,klo menampilkan lebih dari satu table mislakan diweb tu kan ad searchnya..itu kan menampilkan seluruh isi web,gamana caranya?thanks banget tutorialnya

38
Komentar Dikirim oleh alex pada 18 Mei 2009 08:55:37 WIB

bos, apa bisa scrip diatas buat upload video via form ke mysql?

aq coba gagal trus(bukan scrip di atas sih)

39
Komentar Dikirim oleh johan pada 12 Juni 2009 02:32:23 WIB

sudah pernah coba upload .CSV di firefox???

kalo boleh tanya kenapa saya gak bisa upload .csv???

errornya datatype not allowed padahal semua mime nya saya config semua untuk file .csv !!!

40
Komentar Dikirim oleh yogik pada 12 Juni 2009 09:51:40 WIB

mass....sy br blajr php&mysql....trustrang sy sngat buta,tp saya sngat tertarik....apalagi stlah buka web ini sy jd smangat.........mkasih mass...
oya mas klw bisa,upload juga donk mass....."tentang bagusan mana prospek windows programer atau web programer di indo menurut mass"

41
Komentar Dikirim oleh udjo pada 15 Juni 2009 08:33:38 WIB

page mas2 n mbak2....
boleh minta tolong,,, nie aq bikin fungsi upload,, n aq coba komputer lokal bisa,,
tapi setelah aq uploadkan ke website,,,, eh malah gagal waktu move upload file,,,
knp yaw??
makasiiii

42
Komentar Dikirim oleh pangsud pada 09 Juli 2009 10:14:13 WIB

Bagus Sekali.. artikelnya..

tapi alangkah baiknya jika diberi kelanjutan bagaimana menampilkan kembali gambar yang telah di upload

43
Komentar Dikirim oleh krenza pada 16 Juli 2009 10:32:27 WIB

Maaf saya sudah mencobanya menggunakan free web hosting dengan cpane, namun file .jpg yang saya upload tidak masuk ke folder, mengapa ? Tolong kirim penjelasannya ke email saya ya, krenza@rocketmail.com . Terima Kasih

44
Komentar Dikirim oleh athrees pada 30 Juli 2009 05:51:42 WIB

gimana kalo merubah nama file gambar yg di upload misalkan foto.jpg diganti dengan 101.jpg saat di upload.. tapi utk semua file yang berextensi yang berbeda-beda .... (jpg,bmp,gif,jpeg,dlll).
tolong kirim ke emailku ya... athrees@ymail.com

45
Komentar Dikirim oleh Pirman Dwiana pada 09 Agustus 2009 04:56:02 WIB

Gimana kalau servernya adalah linux dengan client windows ?, disini saya pake Redhat AS 4, udah coba script diatas tapi tidak berhasil...... Mohon bantuannya.
Atau Email ke pirmandwiana@ymail.com.
Terimakasih sebelumnya.

46
Komentar Dikirim oleh Ivan pada 29 Agustus 2009 10:06:43 WIB

Buat Guest Book pake Web Page Maker http://www.indowebster.com/wpm.html

47
Komentar Dikirim oleh harboot.com pada 19 September 2009 02:25:54 WIB

koq gak bisa yaaa.. error...
apa karna sintax PHPnya kurang??

48
Komentar Dikirim oleh Nico pada 02 Oktober 2009 03:42:16 WIB

Thanks infonya.
tapi ada satu masalah nich. permasalahan seperti ini:
Bagaimana caranya supaya user dapat menentukan tempat penyimpanan sesuai dengan keinginannya.
jadi, selain user pilih file yang akan di_upload, user juga bisa pilih tempat penyimpanannya.

Terima kasih.

49
Komentar Dikirim oleh taqiy asyam listyawan pada 04 Oktober 2009 07:54:44 WIB

Tapi sayang hanya buat JPEG yah

50
Komentar Dikirim oleh Lynda pada 07 Oktober 2009 03:39:25 WIB

bingung, koq di browserku gk tampil apa2 ya?

51
Komentar Dikirim oleh SUKA MEMEK pada 21 November 2009 12:53:31 WIB

Komputer aj? pikirin memek donk....cewk" disinikan cantik

52
Komentar Dikirim oleh Just Kid pada 04 Desember 2009 05:05:39 WIB

Thank's Bro

53
Komentar Dikirim oleh arie pada 14 Januari 2010 10:18:45 WIB

hmm,,,ty atas tutornya

Kembali keatas

Kirim Komentar:



Security Number