image

PHP - somo la 35: Jinsi ya ku upload mafaili kwa kutumia PHP

Katika somo hili utakwenda kujifunza jinsi ya ku upload mafaili kwenye server kwa kutumia PHP

JINSI YA KU UPLOAD MAFAILI :

Katika somo hili utakwenda kujifunza jinsi ya ku upload mafaili. Somo hili limegawanyika katika sehemu kuu 8:-

  1. Kuandaa html form

  2. Kupata taarifa za faili

  3. Jinsi ya ku upload

  4. Kuedit jina

  5. Kuangalia kama faili lipo

  6. Jinsi ya kuzuia kiwango maalumu cha faili yaani ukubwa

  7. Jinsi ya kuzuia aina maalumu ya mafaili

  8. Jinsi ya kuthibitisha faili

  9. Jinsi ya kubadili jina la faili

  10. Jinsi ya ku upload kwenye taarifa kwenye database. 

  11. Jinsi ya ku upload blob file kwenye database 

  12. Jinsi ya kujuwa error code zinazotokea na maana yake

 

Kutokana na ukubwa wa somo hili tutaliendeleza katika sehemu kadhaa. 

Kwanza kabla ya kuanza somo unatakiwa uhakikishe kuwa server yako inakubali ku upload. Kawaida server zote zinakuwa automatic zinaupload ila endapo haitakubali basi ingia kwenye faili lililoandikwa php.in. Kisha tafuta falipoandikwa file_uploads = On  kama pamewekwa off weka on kisa save.

  

  1. Jinsi ya kuandaa HTML form

Uandaaji wa hii fomu hauna utofauti na tulivyojifunza kwenye mafunzo ya html. Form yako itakuwa na infut type file. Ambapo itakuhitaji uchaguwe faili. Kitu cha tofauti ni kuwa attribute ya fomu imeongezeka moja ambayo ni enctype ambayo ni attribute itakayofahamisha kuwa fomu hii inakusanya data za aina nyingi. Hivyo inakuwa kama hivi enctype="multipart/form-data"

 

   

 

Form nzima ya html itakuwa fupi ti kama hivi

 

   Select Image File:

   

   

 

 

 

  1. Kupata taarifa za faili

Unahitaji kujuwa taarifa mbalimbali kuhusu faili unalotaka ku ipload. Taarifa hizo ni kama:-

  1. Ukubwa wa hilo faili yaani lina MB ngapi

  2. Aina ya hilo faili mfano kama ni picha au audio

  3. Jina la hilo faili yaani linaitwaje

  4. Pahali linapopatikana hilo faili yaani kwa sasa lipo kwenye folda gani

Kujuwa taarifa hizi na nyinginezo utahitajika kutumia global variable $_FILES[];

Ndani ya hayo mabano utaweka name ulioichaguw akutoka kwenye user input ya kwenye html form. 

 

Kwa mfano kwenye form yetu hapo name tumeweka myFile kama inavyoonekana hapo    Baada ya hapo utaweka mabano mengine ambayo ndio yatatupatia taarifa tunayotaka. Kwa mfano kama tunataka kujuwa ukubwa wa faili tutaweka [“size”]. Mfano wa variable nzima itakuwa hivi $_FILES['myFile']['size'];Hivyo basi ili kupata taarifa hizo unaweza kutengeneza variable kama hivi:-

// 1. kujuwa jina la faili

$fileName = $_FILES['myFile']['name'];

// 2. kujuwa ukiubwa wa faili

$fileSize = $_FILES['myFile']['size'];

// 3. kujuwa aina ya faili

$fileType = $_FILES['myFile']['type'];

// 4. kujuwa mahala lilipo link yake

$fileLocation = $_FILES['myFile']['tmp_name'];

// 5. Kujuwa error code

$errorCode = $_FILES['myFile']['error'];

 

Kuna taarifa ingine ambayo tunatakiwa tuipate nayo ni file extension. Hizi ni zile kama .mp4, .pdf, .mp3, .php, .doc na kuendelea. Hivyo tutahitajika kujuwa taarifa hizi ili kuweza ku dhibiti ku upload. Taarifa hii kuipata kwake ni tofauti na hizo zilizotangulia. Hii utaipata kwa kutumia function inayoitwa pathinfo();Kisha itakuwa na parameta 2 ambazo ni jina la faili ambalo kwa maelezo ya hapo juu tumetumia variable $fileName kisha parameta nyingine ni PATHINFO_EXTENSION           

// 6. Kujuwa file extension

$fileextension = pathinfo($fileName, PATHINFO_EXTENSION);

 

3. Kuonyesha taarifa hizi kwenye browser

Sasa hatuwa iliyobaki ni kuweza ku onesha hizi taarifa kwenye browser yako. Endapo utaweza kuonyesha basi itakuwa rahisi kuweka kwenye database yako. Sasa kuonyesha hizi taarifa tutatumia echo.

 

//kujuwa jina la faili

$fileName = $_FILES['myFile']['name'];

// kujuwa ukiubwa wa faili

$fileSize = $_FILES['myFile']['size'];

//kujuwa aina ya faili

$fileType = $_FILES['myFile']['type'];

//kujuwa mahala lilipo link yake

$fileLocation = $_FILES['myFile']['tmp_name'];

//Kujuwa error code

$errorCode = $_FILES['myFile']['error'];

//Kujuwa file extension

$fileextension = pathinfo($fileName, PATHINFO_EXTENSION);

 

//kuonyesha taarifa kwenye browser

echo "Filename: " . $fileName."
";

echo "Type : " . $fileType ."
";

echo "Size : " . $fileSize ."
";

echo "Temp name: " . $fileLocation."
";

echo "Error : " . $errorCode . "
";

echo "Extension:". $fileextension . "
";

 

 

4. Isset Function

Sasa hapa kuna kitu kingine inabidi tujifunze kabla ya kuendelea mbele. Kama uta run code hizo mwanzo kabisa kabla ya ku upload mafaili utaletewa error nyingi kuwa variable bado undefined kama unavyoona kwenye picha hapo juu. Ili kutatuwa tatizo hili tutatumia function inayoitwa isset()Ambayo itakuwa na parameta moja  nayo ni hile name ya ile input ya ku submit file kwenye html form. Kwa mujibu wa form yetu hapo juu name yetu ilikuwa submit hivyo function hii itakuwa isset($_POST["submit"])

       

Kazi ya function hii ni kiutest kama input ina kitu ama haina kitu. Hivyo itasaidia kupunguza error kwa kuwa baada ya kuwa variable kuambiwa undefined zenyewe zitapewa null na kubakia kama zilivyo. Sasa kwa kuwa function hii inatest uwepo wa data baada ya ku submit, hivyo tutatumia if hivyo itakuwa katika sura hii if(isset($_POST["submit"])) {}

Ndani ya hayo mabano {} ndipo kutakaa code zako. 

 

Code zote zitakuwa hivi:-

 

 

   

upload

   

 

 

 

 

   Select File:

   

   

 

 

 

 

 

if(isset($_POST["submit"])) {

//kujuwa jina la faili

   $fileName = $_FILES['myFile']['name'];

// kujuwa ukiubwa wa faili

   $fileSize = $_FILES['myFile']['size'];

//kujuwa aina ya faili

   $fileType = $_FILES['myFile']['type'];

//kujuwa mahala lilipo link yake

   $fileLocation = $_FILES['myFile']['tmp_name'];

//Kujuwa error code

   $errorCode = $_FILES['myFile']['error'];

//Kujuwa file extension

   $fileextension = pathinfo($fileName, PATHINFO_EXTENSION);

 

//kuonyesha taarifa kwenye browser

   echo "Filename: " . $fileName . "
";

   echo "Type : " . $fileType . "
";

   echo "Size : " . $fileSize . "
";

   echo "Temp name: " . $fileLocation . "
";

   echo "Error : " . $errorCode . "
";

   echo "Extension:" . $fileextension . "
";

}

?>

Mfano wa matokeo ya code hizo:

Mpaka kufika hapo tumeweza kupata taarifa zetu za faili. Sasa nikueleze kidogo kuhusu error code. Kama unavyoona hapo juu error code ni 0. Hii ina maana faili halina shida yeyote. Endapo ingekuwa tofauti na hapo basi ingelikuwa ni shida. Baadhi ya error nyingine zinaweza kutokea wakati wa ku upload.sasa tutaendelea hatuwa ya 3 ambayo ni ku upload faili.

 

  1. JINSI YA KU UPLOAD FILE

Hapa sasa kuna taarifa nyingine tunatakiwa tuiongeze kwenye zile data zetu nayo ni folda ambalo tunataka mafaili yetu yawe yana kaa baada ya kuwa uploaded. Sasa tutatengeneza folda kwenye kwa mfano tuliite upload. Hivyo hapo ndipo ambapo mafaili yetu yatakwenda kukaa. Kisha tutatengeneza variable ya kuwakilisha hilo folda. Mfano $folda = "upload/"; 

    

Ili ku upload file tutatumia function ya move_uploaded_file()Hii function ndio hasa hutumika ku upload faili. Function hii ina parameta kuu 2 ambazo ni lazima ziwepo. Kwanza ni locatio ya faili kwa sasa ukiangalia kwenye data zetu hapo juu tumetumia variable ya $fileLocation, parameta nyingine ni folda ambalo faili litakwenda kuwekwa. Parameta hii sio lazima. Kwa maana usipoiweka faili litabakia kwenye root folda yaani folda ambalo hiyo ukurasa wenye code upo. Parameta ya tatu ambayo ni lazima ni jina la faili. Katika data zetu hapo juu jina la faili nimelipa variable $fileName. Kwa mfano function hii itakaa hivi move_uploaded_file($fileLocation, $folda.  $fileName)

 

Kwa kuwa hapa tutataka kuangalia kuwa je faili lipo uploaded ama bado hivyo tutatumia if…..else condition. Ili kiwa upload imefanikiwa itatuambia successful na vinginevyo iseme unsuccessful. Hivyo code nzima itakuwa hivi

if (move_uploaded_file($fileLocation, $folda.  $fileName) ) {

   echo "successful";

} else {echo "unsuccessful";

}

 

Kama utaweka code hizo chini ya pale tulipoishia na uka run utaweza ku upload file. Mfano mimi ni kama hiyo picha hapo chini

 

  1. Kubadili jina

Utaona hapo changamoto kuwa hiko jina la faili kama limeandikwa kwa kuwacha nafasi linakuwa hivyo hivyo kitu ambacho sio kizuri. Hivyo tunataka kubadili baada ya alama za barabarani iwe alama-za-barabarani. Kufanya hivi utatumia function ya ku replace ambayo tulishajifunza katika level 1 mafunzo ya php. Hiyo variable inayobeba jina utaifany akama parameta ya function hii. Sasa utatafyta kila ambapo pamerukwa nafasi na ku replace na alama - ama unaweza ku replace na alamma yeyoye ama namba amba herufi kadiri utakavyo.

 

Kama utakuwa umeweka vyema vbasi code zako zitaonekana hivi:

if (move_uploaded_file($fileLocation, $folda. str_replace(" ", "-", $fileName) )) {echo "successful";

} else {echo "unsuccessful";

}

 

 

 

 

  1. Ongeza vitu kwenye jina

Unaweza pia kwenye hilojina kuongeza tarehe ama kuweka maneno amba kuweka namba. Kwa mfano tunataka hilo faili lianze jina kwa kuandika tyarehe ya siku lilipotumwa. Mfano hapo faili letu liandike 27-9-2022-alama-za-barabarani.jpeg. Kufanya hivi utaongeza parameta yenye hiyo tarehe nyuma ya hiyo parameta yenye jina la faili. Mfano function ya tarehe itakuwa hivi date('d'.'-'.'m'.'-'.'y'.'-')Kwa ujumla code yote itakuwa hivi 

if (move_uploaded_file($fileLocation, $folda. date('d'.'-'.'m'.'-'.'y'.'-'). str_replace(" ", "-", $fileName) )) {echo "successful";

} else {echo "unsuccessful";

}

 

  1. Jinsi ya kuangalia kama faili tayari lipo:

Sasa tunataka kujuwa kama faili tayari lipo ituambie na endapo halipo basi iendelee ku upload. Hii itatusaidia kuzuia ku upload kitu kimoja kila wakati, Sasa hapa tutakwenda ku test jina. Yaani je jina la hilo faili tayri lipo?. Kufanya hivi tutatumia function inayoitwa file_exists()Nayo itabeba parameta mbili, ya kwanza ni jina la folda ambalo faili linakwenda ku uploadiwa na ingine  ni jina la faili hivyo itaonekana kama hivi file_exists($folda.$fileName)

 

Sasa hapa ndipo tunaingia sehemu tata. Maana hapa tunataka kuzuia kama faili lipo basi ikataliwe ku upload tena. Endapo hatutafanya hivi faili lita uploadiwa tena na kuwa overwriten. Hivyo basi itatubidi tu test kama faili lipo ikataliwe na kama halipo basi function ua ku upload ifanikiwe. Hapa tutatumia if ….. Else.

 

Endapo faili lipo basi iseme sorry file exist, na endapo faili halipo basi iendelee ku upload. Code inaweza kuwa hivi 

//kuangalia kama faili lipo

   if (file_exists($fileName)) {

       echo "sorry file exist";

   }

     

 

Sasa kuna kitu tunatakiwa hapa tuwe makini nacho. Kamas unakumbuka tumebadili jina la faili hapo hapo mwanzo. Natumelifanya liwe na tarehe kisha sehemu ambazo zipo wazi ziwe na alama hii - hivyo basi wakati wa kuangalia kama faili lipo au halipo itatubidi kuweka hivyo vitt tulivyoongeza ili kupata mfanano. Kwa hiyo code zitaonekana hivi

//kuangalia kama faili lipo

   if (file_exists($folda.date('d' . '-' . 'm' . '-' . 'y' . '-') . str_replace(" ", "-",$fileName))) {

       echo "sorry file exist";

   }

 

...



Kama unahitaji kuuliza maswali Bofya hapa





           

Je! umeipenda hii post?
Ndio            Hapana            Save post

Rajabu Tarehe 2024-05-10 14:53:23 Topic: PHP Main: Masomo File: Download PDF     Share On Facebook or Whatsapp Imesomwa mara 250


Sponsored links
👉1 Madrasa kiganjani     👉2 kitabu cha Simulizi     👉3 Kitabu cha Afya     👉4 Kitau cha Fiqh     👉5 Simulizi za Hadithi Audio     👉6 Sira ya Mtume Muhammad (s.a.w)    

Post zifazofanana:-

PHP BLOG - somo la 8: Jinsi ya kufuta post kwenye database
katika post hii utajifunza jinsi ya kufuta post kwenye database. pia utajifunza jinsi ya kufuta picha kwenye server Soma Zaidi...

PHP - somo la 48: Jinsi ya kuzuia hacking kwenye sytem ya kujisajili na ku login
Katika somo hili utajifunza jinsi ambavyo utaweza kutengeneza mfumo wa kuisajiki na ku login, kisha kuangalia usalama wa mfumo kwa kuzuia sql injection. Soma Zaidi...

PHP -somo la 6: Jinsi ya kusoma saa na tarehe kwenye PHP
Katika somo hili utakwenda kujifunza jinsi ya kusoma muda kama saa na tarehe kwa kutumia PHP Soma Zaidi...

PHP somo la 58: static method kwenye PHP
Katika somo hili utakwenda kujifunza kuhusu static method na inavtotumika kwenye OOP Soma Zaidi...

PHP - somo la 7: Jinsi ya kaundika function yakwako
Katika somo hili utakwenda kujifunza jinsi ya kuandika function yako mwenyewe yaani user defined function Soma Zaidi...

PHP - somo la 21: Jinsi ya kutafuta kitu kwenye database kwa mutumia PHP
Katika somo hili utakwenda kujifundisha jinsi ya kutafuta taarifa maalumu kwenye database kwa kutumia PHP Soma Zaidi...

PHP somo la 60: namespace na matumizi yake kwenye PHP
Katika somo hili utakwendakujifunza concept ya namespaces na jinsi inavyosaidi kwenye OOP Soma Zaidi...

PHP - somo la 62: Project ya CRUDE operation kwa kutumia PHP - OOP na MySQL database
Katika project hii utakwenda kujifunza jinsi ya kufanya CRUDE operation kwa kutumia PHP OOP na MySQL database. Soma Zaidi...

PHP somo la 84: Maana ya JSON na sheria za kuandika faili la json
Katika somo hili utakwenda kujifunza kuhusu Maana ya JSON na sheria za kuandika faili la json Soma Zaidi...

PHP somo la 87: Jinsi ya kuangalia error wakati wa ku decode na ku encode json data
Katika somo hili utakwenda kujifunza jisni ya kudhibiti error ambazo zinaweza kutokea wakati wa ku encode na ku decoe json data Soma Zaidi...

PHP - somo la 47: Jifunze kuhusu sql injection na kuizuia
Katika somo hili utajwenda kujifunza jinsi ya kuzuia hacking kwenye website yako Soma Zaidi...

PHP somo la 72: Jinsi ya kuandaa PDF kutoana na data zilizopo kwenye database
hapa utawenda utuma database wa ajl ya utengeneza maudhu ya PDF. Soma Zaidi...