pondělí 18. června 2012

Jedonduchý upload souboru v php (obrázek)

Tohle sem dávám jako návod, jak na to. Další důvod je ale i ten, že až zas někdy budu tenhle script potřebovat, mrknu sem.

Jako první, co potřebujeme je stránka s formulářem, do kterého pro odeslání vložíme obrázek.
Stránku si můžeme pojmenovat libovolně, například formular.html.
Mimochodem, pozor. Pokud nemáme  ve stránce žádný script, nestojí za to přidávat mu koncovku .php, proto jsem tam namátkově dal .html.

Stránka formular.html musí obsahovat takovýhle formulář:

<form action="odeslat_soubor.php" method="post" enctype="multipart/form-data"> //tady se nastavi, jakym zpusobem soubor odesleme a kam
<label for="file">Název souboru:</label>
<input type="file" name="soubor" id="soubor"> <br> //pole, do ktereho se vlozi interni adresa obrazku
<input type="submit" name="submit" value="Odeslat"></form> //tlacitko na odeslani - tzv. submit

Jak v action u formuláře vidíme, soubor na zpracování se jmenuje odeslat_soubor.php. Tento soubor by měl obsahovat takový script:
<?php
if ((($_FILES["file"]["type"] == "image/gif") //timto zjistime, jestli jestli je obrazek gif, jpg, nebo png
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Odesláno: " . $_FILES["file"]["name"] . "<br />"; //zobrazi nazev obrazku
echo "Typ: " . $_FILES["file"]["type"] . "<br />"; //typ obrazku
echo "Velikost: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />"; //velikost
echo "Tmp soubor: " . $_FILES["file"]["tmp_name"] . "<br />"; //puvodni nazev

if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " již existuje. "; //hlaska, ze nazev souboru byl jiz nalezen
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"], //timto se posle obrazek do slozky /upload/
"upload/" . $_FILES["file"]["name"]);
echo "Nalézá se v: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Neplatný soubor!"; //jestli neni soubor s koncovkou jpg/png/gif, vyhodi script hlasku
}
?>

Vysvětlení scriptu


Zvolený obrázek se odešle do složky /upload/, jestliže je to soubor s koncovkou png/jpg/gif.
Vyhodí hlášku s informacemi jak se obrázek jmenuje, jaký měl původní název, jakou má velikost a co je to za typ.
Jestliže za soubor zvolíte např. .doc, script to vyhodnotí a vyflusne hlášku, že soubor není validní. Tímto docílíme, že se dá odesílat pouze nějaký druh souborů.

Samozřejmě typy si můžeme zvolit.

Žádné komentáře:

Okomentovat