Home > HTML, PHP/MySql > Form 2: PHP File upload

Form 2: PHP File upload

February 21st, 2009 Leave a comment Go to comments

Хэрэглэгчийн комьютераас серверт  файл илгээх үйлдлийг  file upload гэдэг. Майлд файл хавсаргаж илгээх гэх мэт олон жишээ байна. Бид нарын одоо авч үзэх гэж байгаа жишээ бол Form -оор дамжуулан upload хийх арга юм. Үүнээс гадна FTP -ээр put хийж хуулах арга бас бий. Эдгээр нь веб програмчлал судлаж байгаа хүний заавал мэдэж байх зүйлүүд юм. Ингээд PHP -ээр файл upload хийх талаар жаахан тайлбартай жишээ хийе. Үүнийг myupload.php гэсэн нэг програмаар  хийе.

1. Файл upload хийх боломжийг бүрдүүлсэн HTML формоо хийнэ.

<form id="form1" enctype="multipart/form-data" method="post">
  Файлаа сонгонo уу
<input id="fileField" name="myFile" type="file" />
<input id="button" name="button" type="submit" value="Илгээх" />
</form>

Дээрхи формонд нэмэгдсэн нэг зүйл бол enctype=”multipart/form-data” . Энэ нь уг формоор дамжуулан файл upload хийхэд шаардлагатай байдаг.

2. Файл upload хийх PHP код

< ?php
 
if ($_GET['action']=="upload") {
 
	if (move_uploaded_file($_FILES['myFile']['tmp_name'], 'huulahfolder/'.basename($_FILES['myFile']['name']))) {
		echo 'Файлыг амжилттай upload хийлээ.';
	} else {
		echo 'Файлыг upload хийх үед алдаа гарлаа!\n';
	}
 
}
 
?>

Дээрхи кодноос харахад move_uploaded_file функцээр upload хийгдээд орж ирсэн файлыг хуулж байна. Харин файлыг $_FILES гэсэн PHP -ийн суперглобалаар барьж авч байна. Энэ суперглобалийг жишээгээр тайлбарлая. Жишээ нь хэрэглэгч file.pdf файлыг серверт илгээж байгаа гэвэл $_FILES доорхи байдалтай орж ирнэ.

Array
(
    [myFile] => Array
        (
            [name] =>file.pdf
            [type] => application/pdf
            [tmp_name] => C:\WINDOWS\Temp\php743.tmp
            [error] => 0
            [size] => 90809
        )
 
)

Эндээс харвал $_FILES нь 2 хэмжээст массив харагдаж байна. Массивийг ийм хэлбэрээр хэвлэж харуулахын тулд print_r($_FILES); гэнэ. Уг утгуудад доорхи байдлаар хандана.

$_FILES[‘myFile’][‘name’] – Файлын нэр.
$_FILES[‘myFile’][‘tmp_name’] – Түр нэр. Upload хийгдсний дараа энд байгаа зам, нэрээр байж байдаг байх нь. түүнийг нь move_uploaded_file функцээр байх ёстой фолдерт нь өөрийнх нь нэрээр хуулж байна.
$_FILES[‘myFile’][‘error’] – upload Хийх үед алдаа гарсан түүний тухай мэдээлэл
$_FILES[‘myFile’][‘size’] – upload хийж байгаа файлын хэмжээ байтаар.
$_FILES[‘myFile’][‘size’] – upload хийж байгаа файлын төрөл. Эдгээр мэдээллийг ашиглан ямар төрлийн ямар хэмжээтэй файлыг ямар нэртэйгээр ямар фолдерт хуулахаа өөрөө тогтоож өгөх боломжтой байна.

Хааяа маш том хэмжээтэй файл уплоад хэрэгтэй болдог. PHP 5 -ийн үндсэн тохиргоо нь 2 МБ байдаг. Үүнээс томыг хуулах болвол php.ini дотор доорхи тохиргоонуудыг өөрчлөх шаардагатай.

upload_max_filesize = 2M

Үүнээс гадна файл маань формоор upload хийгдэж байгаа учир мөн php.ini доторхи доорхи тохиргооны утгыг ч нэмэх хэрэгтэй.

post_max_size = 8M

Үүнээс гадна linux төрлийн серверт дээр файл upload хийж байгаа бол уг файлыг хүлээж авах фолдер нь вебийн хэрэглэгч бичих эрхтэй байх шаардлагатай. Үүнийг анхаарна уу.

Хамгийн энгийн тэгээд бас өргөн хэрэглэгддэг арга нэг иймэрхүү байна. Та бүхэн upload хийгдэж байгаа файлаа маш сайн шалгаж хуулж байна уу. Ялангуяа файлын төрөл, өргөтгөлийг болж өгвөл бүүр файл доторхи агуулгыг ч гэсэн шалгаж байвал нууцлал хамгаалалт талаасаа хэрэгтэй юм. *.php файлыг бол мэдээж upload хийлгэж болохгүй гэдэгээ ойлгож байгаа биз дээ. За тэгээд хэмжээ дамжааг бас бодолцоно биз. Үүнийг бичихэд хийсэн жишээг Windows XP, Apache 2.2, PHP 5.2.8 дээр туршиж үзсэн хувилбараар эндээс татаж авна уу. 😎

No related posts.

Related posts brought to you by Yet Another Related Posts Plugin.

Categories: HTML, PHP/MySql Tags: , , ,
  1. February 22nd, 2009 at 00:23 | #1

    Hi all,

    Za iimerhuu zuil bicheh neg ih shaardlagagui bolov uu. Interneteer l duuren bgaa. Harin tuunii orond advanced tuvshinii ym bichvel ih heregtei bolov uu.

    Jishee: Upload hiij bgaa file tmp folder dotor yamar mehanizmaar ochdog, herhen real time upload progress bar hiij boloh geed. Iim l zuils odoogiin PHP coder-uudad ih sonin baih bolov uu.

    Mun PHP heregleh n er n zuv eseh, davuu tal, dutagtaltai tal geed ter talaas n ym bichvel ih heregtei. Ternees basic zuils neteer l duuren bgaa. PHP how to geed l haihad yamar result google-eer oldoh boloo.

  2. February 22nd, 2009 at 00:36 | #2

    Санал бодлоо илэрхийлсэнд баярлалаа. Би бүүр эхлэн сурч байгаа хүмүүст зориулж бичээд байгааг хэрвээ миний бусад бичлэгийг харсан бол ойлгох биз. Уже кодер болчихсон хүмүүст зориулсан юм мэдээж удахгүй бичигдэх болно. Бүгд л лаг царайлаад кодеруудад зориулсан юм бичих гээд үзээд байгаа ш тээ одоо байгаа ганц нэг монгол програмчлалын блогууд. Миний хувьд эхнээс нь системтэй ганц нэг чухал ойлголтыг нь өгчих гээд л үзээд байгаа юм. Энэ миний ажилтай ч холбоотой юм.

  3. hi
    February 22nd, 2009 at 01:04 | #3

    bich bich bas dahin bich. ter iimerhuu engiin zuilsees ehelj baij l advanced tuvshin ruu ochno shd. bi bas ehlen suraltsagch.

  4. February 22nd, 2009 at 02:26 | #4

    hehe

    Erunhiid n bol sanaag n oilgoson l doo. Gehdee anhan shatnii hund zoriulj bichej bgaa bol harin bur step by step bichvel yasan ym be?

    Jishee n: ene muriig delgerengui tailbarlah heregtei sh dee.

    Form-oos damjuulagdaj bgaa huvisagch iig huleej avaad bolovsruulah huudas n buyu uildel hiih n aa.php file ym aa. Gehdee GET, POST-oor damjigdah uu geed jinhene heregtei zuiliig tailbarlah heregtei bus uu?

    Uuniig medehgui oilgoogui hun zunduu bgaa biz ee? Form POST hiih ued herhen security hangah uu?

    File upload hiihed uug anhaarah, chmod 777 gedeg zuiliig tailbarlah, PHP+MySQL+Apache gesen hoslol er n Windows server deer ajillaad baih n hovor ajillaa ch gesen standalone mayagaar ajillaj buren utgaaraa server performance uzuulej chaddaggui geh met.

    Dugnej helehed neg burchlen zaaj ugsun zuil tuhain hunii tolgoid ih zuiliig uldeeh buguud tsaashid ym surahad n mash ih duhum uguh bolno shu dee.

  5. February 22nd, 2009 at 03:12 | #5

    $_GET, $_POST гэх мэт зүйлүүд яригдах газараа яригдаад явж байгаа. (гэхдээ бичигдээгүй байгаа байгаа) Харин нууцлал хамгаалалтын энэ тэр асуудалыг нилээд юм ойлгодог болсны дараа ярья гэж бодож байгаа.

    Эцэст нь хэлэхэд миний энд бичээд байгаа зүйл тодорхой хүмүүст зориулаад байгаа зүйл бөгөөд чиний хэлсэн зүйлүүд ангийн сургалтаар явж байгаа бөгөөд харин би жаахан хойно урд нь оруулаад ийшээ тийшээ үсрээд бичээд байгаа тал бол байгаа. Одоо форм validation-ийг JS eer хийх, тэгээд mysql-тэй холбох, regular expression-ийг формтой холбон авч үзэх жишээнүүд явна. Тэгээд session, cookie, GD2, mail, XML parsing, нууцлал хамгаалалтын асуудлууд SQL injection гэх мэт зүйлүүд энд бичигдэнэ.

    Харин $_GET, $_POST, $_REQUEST -ийн хэрэглээ энэтэрийн талаар нэг бичлэг оруулчихаад бүгдийг цэгцэлсэн дараалалд оруулаад бас нэг юм бичих санаа байна даа.

    Ямар ч гэсэн миний блогийг олж үзээд сэтгэл санаагаа гарган бичсэнд баярлалаа. Цаашид санаа оноогоо хэлж байгаарай.

  6. khishig
    February 22nd, 2009 at 11:40 | #6

    Bibo-d хүн шүүмжилж суухаар өөрөө наад санаануудаараа тэгээл бичилдээ, хүний хийснийг шүүмжлэх амархан, өөрөө хийх их хэцүү байдаг юм шдээ

  7. khishig
    February 23rd, 2009 at 16:22 | #7

    тэгэж ярих бол интернет-д advanced ч түвшины юм ч хангалттай байгаашдээ.

    Хамгийн гол эх хэл дээрээ, эмх цэгцтэй нэг газраас мэдээлэл олж авна гэдэг хэцүү.

    Ямар ч сайн хэл эзэмшсэн байлаа гэсэн эх хэл дээрээ сурснаас илүү байж чадахгүй л болов уу, english дээр сургалтын материал, монгол хэл дээрхи сургалтын материал өгөөд үр дүнг харьцуулахад эх хэл дээрээ сурсан хүмүүс хамаагүй илүү байсан гэж Инженерсофтын захирал Батболд яриж байна лээ. Тэднийх Delphi-гийн гарын авлагаа хүртэл орчуулсан байдаг гэсэн, уг нь бол Delphi-гийн мэдээлэл нет-ээр л нэг байгаа шдээ

  8. tume
    February 24th, 2009 at 11:10 | #8

    Үнэхээр сайхан хичээлийн сан бүрдэж байгаа юм байна Баярлалаа 😆

  9. Baku
    March 13th, 2009 at 16:29 | #9

    @admin
    sain bna uu
    ene upload.iig Form 1 deerh shig 2 huudsan hiiwel yaj myFile.aa barij awah we
    $_FILES[$_POST[‘myFile’]][‘name’];
    $_POST[$_FILES[‘boxFile’][‘name’]];
    $_FILES[‘boxFile’][‘name’];
    geh zergeer uzlee barij awch chaddaggui ee
    print_r($_POST);
    ingej hewlej uzlee damjij bna hewlej bna lee

  10. March 13th, 2009 at 16:56 | #10

    Baku-d. $_FILES[$_POST[‘myFile’]][‘name’]; гэхгүй. зүгээр л $_FILES[‘myFile’][‘name’] гэж авна. myFile гэдэг чинь input type=”file” name=”myFile” гэдгийн нэр гэдэгээ мэдэж байгаа биз дээ. Өөрөөр хэлбэл чи энэ нэрийг юу ч гэж өгч болно. харин 2 дахь индекс болох name, type size энэ тэр бол угаасаа тийм байх тогтмолууд юм.

  11. baku
    March 19th, 2009 at 10:00 | #11

    bayrlalaa bolson shuu

  12. bie daagch
    April 22nd, 2009 at 22:34 | #12

    za boliochee ter hi, bibo-ch genuu nuhduud mundag bol uuriinhoo regiondoo l mundagtldaa anhan surchiigaa humuus zunduu l bgaa shd um medej avch bval l boloom bishuu zarim humuust ni heggui bval uur um olj unshildaa medehgui zarimand ni heregteil bnshd bi lav @@move_uploaded_file функцээр upload хийгдээд орж ирсэн файлыг хуулж байна@@ en functionii uurgiig netees mongol tailbartai haij 2 honoj bn tiim surhii um bol ter mundag bibo minbo ch genuu shalichignasan umnuud tavichih l bsan bizdee oldohgui bgaa um chin harin ashigui endeees oldloo ih tus bolloo mash ih bayrallaa

  13. se7en
    April 24th, 2009 at 14:02 | #13

    bi pdf yumuu doc zereg file-uudiig browser deer haruulah gesen yum. eswel tegeh bolomj bdaggui yumuu.

  14. Bilguun
    May 3rd, 2009 at 18:52 | #14

    hi.file upload hiigeed hamgin gol ni ugugdliin sand hiih heregtei bn ldaa. (mysql). yahav unshdaa ugugdlin sand hiij bolj bgan. daraa butsaad ugugdlin sangaasaa txt,html ch yumuu file-uudig unshaad tatahaar neej bolj bga hernee, office file-uud, exe file-g neeheer tuhain file maani ooroo aldaatai bgad bh yumaa. eniig yaaj shiidverleh ve? tusalval mash ih bayarlah bnaa nuhduu

  15. May 3rd, 2009 at 20:53 | #15

    SEVEN-д. тухайн хэрэгэгчийн броузэр нээх бол нээнэ. Татаж авах татаад авна.

    Билгүүнд. Чинии болж байгаа файлууд чинь текст файлууд байна. Харин exe болон оффисийн файлууд чинь хоёртын (binary) файлууд юм. Чи файлыг уншаад хийж байгаа талбар чинь текст талбар авсан бололтой. Чи ямар ч файл уншаад хийнэ гэвэл mysql дээр BLOB талбарт хийнэ.

  16. batuka
    August 26th, 2009 at 21:22 | #16

    Hey..html kodiig ni php-tei yaj holbox ym be?

  17. August 27th, 2009 at 10:42 | #17

    Batuka: Jisheeg ni tataj avaad uzeerei. HTML ni php dotoroo baigaa.

  18. CrazyUka
    September 29th, 2009 at 15:54 | #18

    adminaaa blogtoo yaj media player suulgahu? code hiih yostoi yumu? yamar code yaaj hiih ve? gils tuslaach

  19. September 29th, 2009 at 16:08 | #19

    CHi videogoo ehleed FLV formattai bolgono. Tegeed teriigee togluulah yum tavina. Hamgiin engiin player Dreamweavert baij l baigaa. Harin nileed olon video togluulah ene ter gevel server bolon hiih argaa saitar bodoh heregtei. Er ni tsuuhun heden video togluulah bol http://www.altankhuyag.mn deer baigaa shig hiisen deer. Bi teriig hiij baisan bolovch haanaas ter playeriig avsnaas sanahgyi baina. Oroldood uz buur bolohgyi bol comment uldeechih

  20. zoloo
    January 21st, 2010 at 05:31 | #20

    pagination nii talaar hicheel oruulaad uguuch style baazaasaa yaj bicheglel zurag ntr iig ni duudah talaar bwal sain bn

  21. zaya
    May 3rd, 2010 at 01:03 | #21

    hi amjilt husie. upload hiih download hiih talaar iluu ih medeelel oruulj ogooch

  22. zolboo
    August 15th, 2011 at 14:00 | #22

    hiisen uploadaa edit update yaaj hiih ve?

  23. August 15th, 2011 at 20:16 | #23

    Upload hiisen filee haruulaad zasah bol dahin uur file upload hiij l edit yildel hivel zugeer. Symfony geh met framework uud tegdeg. Herveee shine file upload hiisen bol huuchin file uudaa unlink hiij baih heregtei gej helh bna.

  1. No trackbacks yet.