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";

   }

 

...



Je! umeipenda hii post?
Ndio            Hapana            Save post

Kama unahitaji kuuliza maswali Bofya hapa

Mwandhishi Tarehe 2023-10-18 Download PDF     Share On Facebook or Whatsapp Imesomwa mara 93


Download our Apps
👉1 kitabu cha Simulizi     👉2 Kitau cha Fiqh     👉3 Madrasa kiganjani     👉4 Kitabu cha Afya    

Post zifazofanana:-

PHP somo la 56:class interface na polymorphism kwenye PHP OOP
Katika somo hili utakwenda kujifunza concept ya interface na concept ya polymorphism kwenye PHP 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 60: namespace na matumizi yake kwenye PHP
Katika somo hili utakwendakujifunza concept ya namespaces na jinsi inavyosaidi kwenye OOP Soma Zaidi...

PHP - somo la 45: Jinsi ya kutuma sms kwa kutumia PHP
Katika soko hili takwenda kujufunza jinsi ya kutuma sms kwa kutumia PHP. Hii itasaidia kama unataka kutuma OTP yaqni Onetime password Soma Zaidi...

PHP - somo la 24: Jinsi ya ku upload file kwenye database na kulisoma kw akutumia php
Katika somo hili utajifnza jinsi ya ku upload file kwenye database. Kisha utajifunza jinsi ya kulisoma faili hilo kwa kutumia php Soma Zaidi...

PHP BLOG - somo la 11: Jinsi ya kutumia prepared statement
Katika somo hili utajifnza jinsi ya kufanya prepared statement kama njia ya kuzuia sql ingection kwenye PHP blog Soma Zaidi...

PHP somo la 49: utangulizi wa Object Oriented Programming katika PHP
Huu ni mwendelezo wa mafunzo ya PHP na hapa tunaaza rasmi advanced PHP. tutakwenda kuingia ndani zaidi kwenye PHP. Ni vyema kabla ya kuanza course hii ya advanced PHP uwe una uelewa wa kutosha kuhusu mafunzo yetu ya PHP. Soma Zaidi...

PHP somol la 55: PHP Abstract Class na abstract method
Katika somo hili utakwenda kujifunza concept mpya ya abstract class na abstract method kwenye OOP. Soma Zaidi...

PHP - somo la 1: Maana ya PHP na jinsi inavyofanya kazi
Katika somo hili utakwenda kujifunza maana ya PHP na jinsi inavyofanya kazi Soma Zaidi...

PHP somo la 50: Jinsi ya kutengeneza CLASS na OBJECT kwenye PHP OOP
Katika somo hili utakwenda kujifunza jinsi ya kutengeneza class na object. Tunakwenda kutumia mfano wetu wa hapo juu kwa ajili ya kukamilisha somo hili. Soma Zaidi...

PHP - somo la 10: Jinsi ya kundika condition statement if, ifelse na switch case
Katika somo hili utakwenda kujifunza kuhusu condition statements if, ifelse na switch case. Hata utajifunza jnsi ya kuziandika na zinavyofanya kazi Soma Zaidi...

PHP - somo la 17: Jinsi ya kuingiza data kwenye database kwa kutumia PHP
Katika somo hili utajifunza jinsi ya kuingiza data kwenye dtabase kwa kutumia PHP. Soma Zaidi...