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:-
Kuandaa html form
Kupata taarifa za faili
Jinsi ya ku upload
Kuedit jina
Kuangalia kama faili lipo
Jinsi ya kuzuia kiwango maalumu cha faili yaani ukubwa
Jinsi ya kuzuia aina maalumu ya mafaili
Jinsi ya kuthibitisha faili
Jinsi ya kubadili jina la faili
Jinsi ya ku upload kwenye taarifa kwenye database.
Jinsi ya ku upload blob file kwenye database
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.
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:
Kupata taarifa za faili
Unahitaji kujuwa taarifa mbalimbali kuhusu faili unalotaka ku ipload. Taarifa hizo ni kama:-
Ukubwa wa hilo faili yaani lina MB ngapi
Aina ya hilo faili mfano kama ni picha au audio
Jina la hilo faili yaani linaitwaje
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.
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
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";
}
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";
}
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
Rajabu Tarehe 2024-05-10 14:53:23 Topic: PHP Main: Masomo File: Download PDF Share On Facebook or Whatsapp Imesomwa mara 303
Sponsored links
👉1 Sira ya Mtume Muhammad (s.a.w)
👉2 Madrasa kiganjani
👉3 Kitabu cha Afya
👉4 Kitau cha Fiqh
👉5 kitabu cha Simulizi
👉6 Simulizi za Hadithi Audio
PHP BLOG - somo la 5: Jinsi ya kuandika code za PHP kwa ajili ya kuweka post kwenye blog
Katika ukurasa huu utakwenda kujifunz jinsi ya kuandika code za php kwa ajili ya kutuma post yetu kwenye blog. Soma Zaidi...
PHP - somo la 40: Jinsi ya kutumia htaccess file kubadilisha muonekano wa link
Katika somo hili uatakwenda kujifunza jinsi ya kutumia htaccess ili kubadili muonekano wa link ya website ama blog ili kuifanya iwe rafiki zaidi. 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 14: Jinsi ya kutengeneza database kwa kutumia PHP
Katika somo hili utakwenda kujifunza jinsi ya kutumia PHP kutengeneza database kwenye mysql database. Soma Zaidi...
PHP - somo la 43: Jinsi ya kutuma email kwa kutumia PHP
Katika somo hili utajifunza jinsi ya kutuma email kwa kutumia email() function ya PHP. Hii ni njia rahisi zaidi ya kutuma email. Ila hufanya kazi kwenye hosting. Soma Zaidi...
PHP - somo la 25: Jinsi ya kukusanya taarifa kutoka kwenye html form kwa kutumia php
Katika somo hili utajifunza jinsi ya kukusanya taarifa ambazo watu wamezijaza kwa kutumia fomu ya html. Kisha utajifunza jinsi ya kuzisoma hizo taarifa. Soma Zaidi...
PHP somo la 57: class traits kwenye PHP
Katika somo hili utakwenda kujifunza concept ya traits kwenye OOP. hii itakusaidia ku solve baadhi ya changamoto zinazotokana na inheritance Soma Zaidi...
PHP - somo la 36: Jinsi ya ku upload taarifa za mafaili kwenye database kw akutumia PHP
katika somo hili utajfunza kukusanya taarifa za mafaili. kisha ku upload hayo mafaili. kisha kuandika hizo taarifa za mafaii kwenye database Soma Zaidi...
PHP somo la 82: Content-Disposition
Katika somo hili utakwenda kujifunza kuhusu aina ya header inayoitwa Content-Disposition Soma Zaidi...
PHP - somo la 20 : Jinsi ya kufuta na ku update data kwenye database kwa kutumia PHP
Katika somo hili utakwenda kujifunza jinsi ya ku update na kufuta data 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 26: Jinsi ya kutengeneza system ya ku chat kw akutumia PHP
Katika somo hili utajifunza jinsi ya kutengeneza system ambayo mta atajisajili pamoja na kuchat na watumiaji wengine Soma Zaidi...