- Otváranie a zatváranie súborov
1.1 FOpen
1.2 Funkcia File_Exists
1.3 FClose - Čítanie a zápis do súborov
2.1 FRead
2.2 Funkcia FileSize
2.3 FWrite
2.4 Funkcia File
2.5 Funkcie FGets a FEof
- Upload súborov na server
OTVÁRANIE A ZATVÁRANIE SÚBOROV
Na to aby sme mohli pracovať so súborom(i) , ho(ich) potrebujeme otvoriť. Analogicky po práci s nimi ich potrebujeme zavrieť. Na otváranie súborov sa v PHP používa príkaz :FOPEN
Jeho syntax je nasledovná :
fopen("cesta_a_nazov_suboru","mod");
Obidva parametere sú povinné:
"cesta_a_nazov_suboru" - je cesta k suboru s absolútne zadanou cestou cez protokol HTTP/FTP. Pokiaľ je skript a otváraný súbor v tom istom adresári stačí zadať názov súboru.
"mod" - je mód v akom sa súbor otvorí. Zoznam módov s popisom :
- "r" - otvorí súbor len na čítanie. Začne čítať na začiatku súboru.
- "r+" - otvorí súbor pre čítanie a zápis. Začne čítať/zapisovať na začiatku súboru.
- "w" - otvorí súbor len pre zápis. Ak súbor existuje otvorí sa a vymaže celý obsah. Ak neexistuje, vytvorí sa.
- "w+" - otvorí súbor pre čítanie a zápis. Ak existuje otvorí a vymaže celý obsah. Ak neexistuje, vytvorí sa.
- "a" - otvorí súbor pre pridávanie. Ak existuje otvorí sa a pridá obsah ku koncu súboru. Ak neexistuje, vytvorí sa.
- "a+" - otvorí súbor pre zápis a pridávanie. Ak existuje otvorí sa , zachová sa obsah a zapisuje na koniec súboru.
- "x" - zápis. Vytvorí nový súbor , ak existuje vráti false.
- "x+" - čítanie a zápis. Vytvorí nový súbor, ak existuje vráti false.
Použitie parametra exit:
Toto zadanie vygeneruje chybovú hlášku a pripojí text zadaný za parametrom exit v prípade ,že fopen vráti false.
Otváraný súbor ukladáme do premennej.
$subor = fopen("skuska.txt","r") or exit ("Súbor neexistuje !");
Ak chceme použiť iný spôsob ako ošetriť skript ,aby neotváral neexistujúce súbory , existuje funkcia :
File_Exists()
Syntax : File_Exists("nazov_suboru");
Príklad :
if(File_Exists("skuska.txt") {
$subor = fopen("skuska.txt","r");
}
else {
echo "Súbor neexistuje !";
}
Užitočnou funkciou je:
Po ukončení práce so súborom ho uzavrieme príkazom :
FCLOSE
tento príkaz má jediný parameter a jeho syntax je :
fclose("premenna_s_obsahom_suboru");
Príklad :
$subor = fopen("skuska.txt","r+");
.. práca so súborom ..
fclose("$subor");
ČÍTANIE A ZÁPIS DO SÚBOROV
Pre čítanie dát zo súboru používame príkaz :FREAD
Jeho syntax je nasledovná :
fread($subor,"velkost");
Obidva parametre sú povinné.
"$subor" - je premenná v ktorej je otvorený súbor pomocou funkcie fopen.
"velkost" - je veľkosť v bajtoch ,ktorá sa má načítať
V prípade ,že chceme načítať celý súbor ,nebudeme určovať jeho dĺžku v bajtoch (čo je navyše nemožné ak sa súbor dynamicky mení) , ale použijeme funkciu :
FileSize
Syntax :
FileSize("subor");
Príklad:
$subor = fopen("skuskat.txt","w");
fread($subor,filesize("skuska.txt"));
fclose($subor);
Pre zápis dát do súboru použijeme príkaz :
FWRITE
Syntax :
fwrite("$subor","retazec","velkost");
Parameter "dlzka" je nepovinný , ostatné áno.
"$subor" - je premenná v ktorej je otvorený súbor pomocou funkcie fopen.
"retazec" - je reťazec ,ktorý predstavuje dáta ,ktoré chceme do otvoreného súboru vložiť
"velkost" - určuje veľkosť v bajtoch ,ktorá sa má zapísať
Príklad :
$subor = fopen("skuska.txt","w");
fwrite($subor,"Hello World !"); //zapíše hello world do súboru skuska.txt
fclose($subor);
Celkom užitočná funkcia je :
File
,ktorá načíta obsah súboru do poľa , kde indexom poľa sú jednotlivé riadky súboru. Jej jediným parametrom je názov súboru.
Syntax :
File("skuska.txt")
Táto funkcia bude použitá v nasledujúcom príklade.
FGets a FEof
funkcie fgets() a feof() majú jediný parameter a to premennú v ktorej je otvorený súbor.
fgets($subor)
feof($subor)
funkcia fgets načíta obsah súboru po jednotl. riadkoch
funkcia feof určuje koniec súboru, resp. posl. zápis. EOF = End Of File
Ich použitie bude demonštrované v nasledujúcom príklade :
Príklad 21
<? $subor = fopen("skuska.txt","w"); fwrite($subor,"Prvy riadok \nDruhy riadok \nTreti riadok"); //použitie escape sekvencie n pre nový riadok fclose($subor); |
Otvoríme súbor skuska.txt (ak neexistuje vytvorí sa nový) pre zápis do premennej $subor.
Zapíšeme do neho (za pomoci escape sekvencie \n) tri riadky.
Zavrieme súbor.
$subor = fopen("skuska.txt","r"); $data = fread($subor,filesize("skuska.txt")); echo $data; fclose($subor); |
Otvoríme súbor skuska.txt len pre čítanie do premennej $subor.
Do premennej $data načítame obsah celého súboru pomocou funkcie filesize.
Vypíšeme obsah súboru.
$subor = fopen("skuska.txt","r"); while(!feof($subor)) { echo fgets($subor)."<br />"; } fclose($subor); |
Otvoríme súbor skuska.txt len pre čítanie do premennej $subor.
Pomocou cyklu while budeme vypisovať (fgets) obsah otvoreného súboru po jednotl. riadkoch pokiaľ sa nenarazí na koniec súboru (feof).
$subor = File("skuska.txt"); for ($i=0; $i < Count($subor); $i++){ echo "Index poľa $i : ".$subor[$i]."<br />"; } |
Pomocou funkcie File načítame do premennej $subor pole kde indexom budú jednotl. riadky v súbore skuska.txt.
Pomocou cyklusu for a funkcie count budeme vypisovať jednotlivé indexy tohto poľa dovtedy pokiaľ nenarazíme na koniec súboru.
UPLOAD SÚBOROV NA SERVER
Ako sme si spomenuli v článku o superglobálnych premenných , pre nahrávanie súborov na server použijeme pole $FILES. Zopakujeme si syntax :$FILES["file"]["meno"]["dalsie parametre"] ... , kde zoznam parametrov je nasledovný :
- "file" - názov elementu použitého vo formulári (id , name)
- "name" - meno súboru
- "typ" - typ súboru podľa špecifikácie MIME
- "size" - veľkosť súboru v bajtoch
- "tmp_name" - dočasný názov súboru pod ktorým bol uložený na serveri
- "error" - chyba vygenerovaná ,počas nahrávania súboru na server
Problematiku uploadu súborov nám objasní nasledujúci príklad :
Príklad 22
upload_form.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <title>Príklad č. 22 - Upload súborov na server , http://php.blog.sk</title> </head> <body> <form action="nahraj_subor.php" method="post" enctype="multipart/form-data"> <p>Súbor:</p> <input type="file" name="file" id="file"> <input type="submit" value="Nahraj"> </form> </body> </html> |
nahraj_subor.php
<?php if ($_FILES["file"]["error"] > 0) { echo "Vyskytla sa chyba :".$_FILES["file"]["error"]." !"; } else { echo "Nahraný súbor :".$_FILES["file"]["name"]."<br />"; echo "Typ súboru :".$_FILES["file"]["type"]."<br />"; echo "Veľkosť súboru :".($_FILES["file"]["size"] / 1024)." Kb <br />"; echo "Dočasný názov súboru :".$_FILES["file"]["tmp_name"]."<br />"; move_uploaded_file($_FILES["file"]["tmp_name"],"upload/".$_FILES["file"]["name"]); echo "Súbor je umiestnený :"."upload/".$_FILES["file"]["name"]; ?> |
Myslím ,že tento príklad dostatočne demonštruje použitie $_FILES. Upozorňujem , že tento príklad nie je vhodný pre praktické použitie ,pretože neobsahuje (napr.) kontrolu typu vkladaného súboru ,alebo kontrolu či uploadovaný súbor už neexistuje na serveri.
Ale ak ste čítali predošlé články mali by ste si to vedieť bez problémov upraviť.
Ďalej chcem upozorniť ,že funkcie pre prácu so súbormi sú zavislé od nastavenia web servera , resp. atribútov. (či je povolený zápis do adresára "upload" ,alebo či je možné zapisovať / vytvárať súbory).Napríklad v prípade ,že budete chcieť zapisovať do adresára ,ktorý nemá právo pre zápis , PHP vygeneruje chybu.
Články
Predošlý článok : 7. Formuláre a superglobálne premenné
Nasledujúci článok : 8. Cookies
Odkazy
Stiahnite si príklady vypracované v článku
Komentáre
sdadsdsa