PHP tiedostojen lataus
- Edellinen sivu PHP tiedoston luominen/ kirjoittaminen
- Seuraava sivu PHP evästeet
PHP:n avulla voit ladata tiedoston palvelimelle.
Luo tiedoston latauslomake
Käyttäjän tiedoston lataaminen lomakkeesta on erittäin hyödyllistä.
Katso seuraava HTML-lomake, jolla tiedosto voidaan ladata:
<html> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <label for="file">Tiedostonimi:</label> <input type="file" name="file" id="file" /> <br /> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>
Huomaa seuraavat tiedot tästä lomakkeesta:
<form>-tagin enctype-ominaisuus määrittää, minkä tyyppistä sisältöä käytetään lomakkeen lähettäessä. Kun lomakkeessa tarvitaan binaarisia tietoja, kuten tiedoston sisältöä, käytä "multipart/form-data".
<input>-tagin type="file"-ominaisuus määrittää, että syöte käsitellään tiedostona. Esimerkiksi selaimessa esitettäessä näet syötekentän viereisessä selailupainikkeen.
Huomautus:Käyttäjän tiedoston lataaminen on valtava turvallisuusriski. Salli vain luotettavien käyttäjien suorittaa tiedoston lataustoiminto.
Latausskriptin luominen
Tiedosto "upload_file.php" sisältää koodin tiedoston lataamista varten:
<?php if ($_FILES["file"]["error"] > 0) { echo "Virhe: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Lataus: " . $_FILES["file"]["name"] . "<br />"; echo "Tyyppi: " . $_FILES["file"]["type"] . "<br />"; echo "Koko: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Tallennettu: " . $_FILES["file"]["tmp_name"]; } ?>
Käyttämällä PHP:n globaalia taulukkoa $_FILES voit ladata tiedoston asiakkaan tietokoneelta etäpalvelimelle.
Ensimmäinen parametri on lomakkeen input name, toinen indeksi voi olla "name", "type", "size", "tmp_name" tai "error". Esimerkiksi:
- $_FILES["file"]["name"] - lähetetyn tiedoston nimi
- $_FILES["file"]["type"] - lähetetyn tiedoston tyyppi
- $_FILES["file"]["size"] - lähetetyn tiedoston koko, tietoksiin laskettuna
- $_FILES["file"]["tmp_name"] - palvelimella tallennetun tiedoston tilapäisen kopion nimi
- $_FILES["file"]["error"] - tiedoston lataamisesta aiheutunut virhekoodei
Tämä on erittäin yksinkertainen tapa ladata tiedostoja. Turvallisuussyistä sinun tulisi lisätä rajoituksia sille, kenellä on oikeus ladata tiedostoja.
Latausrajoitukset
Tässä skriptissä lisäsimme rajoituksia tiedoston lataamiselle. Käyttäjä voi ladata vain .gif- tai .jpeg-tiedostoja, ja tiedoston koko täytyy olla alle 20 kb:
<?php if ((($_FILES["file"]["type"] == "image/gif")) || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Virhe: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Lataus: " . $_FILES["file"]["name"] . "<br />"; echo "Tyyppi: " . $_FILES["file"]["type"] . "<br />"; echo "Koko: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Tallennettu: " . $_FILES["file"]["tmp_name"]; } } else { echo "Virheellinen tiedosto"; } ?>
Huomautus:IE:ssä jpg-tiedoston tyyppi on oltava pjpeg, Firefoxissa jpeg.
Tallenna lähetetty tiedosto
Yllä olevassa esimerkissä palvelimen PHP tilapäisessä kansiossa luotiin lähetetyn tiedoston tilapäinen kopiointi.
Tämä tilapäinen kopioitu tiedosto katoaa skriptin päätyttyä. Jos haluamme tallentaa lähetetyn tiedoston, meidän täytyy kopioida se toiseen paikkaan:
<?php if ((($_FILES["file"]["type"] == "image/gif")) || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")) && ($_FILES["file"]["size"] < 20000)) { if ($_FILES["file"]["error"] > 0) { echo "Palautuskoodei: " . $_FILES["file"]["error"] . "<br />"; } else { echo "Lataus: " . $_FILES["file"]["name"] . "<br />"; echo "Tyyppi: " . $_FILES["file"]["type"] . "<br />"; echo "Koko: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; echo "Väliaikainen tiedosto: " . $_FILES["file"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " on jo olemassa. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Tallennettu: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Virheellinen tiedosto"; } ?>
Yllä oleva skripti tarkistaa, onko tiedosto jo olemassa, eikä ole, siirtää tiedoston määrätylle kansiolle.
Huomautus:Tämä esimerkki tallensi tiedoston uuteen "upload"-kansioon.
- Edellinen sivu PHP tiedoston luominen/ kirjoittaminen
- Seuraava sivu PHP evästeet