Tredun ohjelmistokehittäjien kurssimateriaaleja
Usein verkkopalveluissa täytyy työskennellä erilaisten tiedostojen kanssa. Niitä voidaan luoda käyttäjän antamasta syötteestä, niitä pitää joskus lukea ja ladata palvelimelle.
PHP:ssä on funktion nimeltään fopen(), joka yhtä aikaa luo että avaa tekstitiedoston. Funktiolle annetaan nimi sekä moodi, jolla siihen kirjoitetaan. Moodit ovat “w” eli write, “a” eli append ja “r” eli read. Kun käytetään writea, tarkoittaa se sitä, että tiedosto on avatessa tyhjä ja se tyhjentyy, jos siihen kirjoitetaan uudelleenavattessa jotain. Append taas tarkoittaa sitä, että tiedostoon lisätään uudet asiat, mikäli siellä on jo olemassa tekstiä eli jos tiedosto voidaan avata monta kertaa ja halutaan pitää vanha teksti, kannattaa käyttää append-moodia. Readin avulla tiedoston sisältö voidaan lukea ja esimerkiksi tulostaa echon avulla konsoliin tai verkkosivulle.
Alla olevalla koodilla luodaan koodin kanssa samaan kansioon tekstitiedosto write-moodilla:
<?php
$myfile = fopen("myfile.txt", "w");
?>
fwrite() on funktio, jolla luotuun tiedostoon kirjoitetaan asioita sen jälkeen, kun se on avattu. Sille annetaan avatun tiedoston nimi sekä kirjoitettava teksti.
<?php
$myfile = fopen("myfile.txt", "w");
$text = "Hello world!";
fwrite($myfile, $text);
?>
Lopuksi tiedosto suljetaan käyttämällä funktiota fclose(), jolle annetaan tiedoston nimi. Tätä tarvitaan, jotta tiedoston voi avata myöhemmin uudelleen mahdollisesti toisen käyttäjän toimesta. Lisäksi avonainen tiedosto vie enemmän muistia ja voi heikentää ohjelman toimivuutta.
On myös hyvä tapa tehdä tiedoston avaukseen tarkistus, onnistuuko avaus.
<?php
$myfile = fopen("myfile.txt", "w") or die("Unable to open file!");
$text = "Hello world!";
fwrite($myfile, $text);
fclose($myfile);
?>
Jos haluamme lukea kyseisen tiedoston sisällön ja tulostaa sen konsoliin, käytämme funktiota fread(), jolle annetaan avatun tiedoston nimi sekä tiedoston koko, joka voidaan ilmoittaa tiedonton nimenä.
<?php
$myfile = fopen("myfile.txt", "r") or die("Unable to open file!");
$readText = fread($myfile, filesize("myfile.txt"));
echo $readtext;
fclose($myfile);
?>
HTML-lomakkeissa on yhtenä inputin vaihtoehtona tyyppi file. Tällöin kyseiseen kohtaan on mahdollista ladata jokin tiedosto, mutta kuten kaikkien syötteiden kanssa, sekin täytyy käsitellä jollakin tavalla.
Käykää lukemassa ohjeet tiedostojen lataamiseen w3schoolsista