Jednoduchý upload souboru na server pomocí PHP
Někteří z vás si psali o článek pojednávajícím o uploadu souboru na server. V dnešním článku vám popíšu jednoduchý upload souboru do vybraného adresáře, bez použití databáze. Úspěšný upload bude doprovázen posláním informačního e-mailu na adresu správce serveru.
Úvodní formulář
Nejprve vám představím kód jednoduchého formuláře, jehož prostřednictvím se bude upload souboru na server realizovat.
|
Nyní uvedu pár komentářů k uvedenému formuláři. Oproti běžným formulářům jsou zde nějaká rozšíření. Protože chci přenést soubor, zadefinoval jsem hodnotu atributu ENCTYPE na „multipart/form-data“. Standardní hodnotou, jak asi víte, je totiž „application/x-www-form-urlencoded“. Takové kódování je ale pro náš případ nepoužitelné. Pokud je použito kódování „multipart/form-data“ je nutné použít pro přenost metodu POST. Pro zadání názvu souboru je vstupní pole typu „file“, které umožní uživateli soubor také vybrat z klasického okna pro výběr souboru.
Zpracování formuláře
Po stisknutí tlačítko „Upload“ je zavolán skript upload.php, který nyní zpracuje požadavek. Uploadnutý soubor je dočasně přístupný přes proměnnou $soubor, resp. skrze několik proměnných, které mají řetězec „soubor“ uveden jako prefix. Jsou to:
- $soubor – obsahuje jméno dočasného souboru, do kterého nám php skript soubor uložil
- $soubor_type – obsahuje MIME typ souboru
- $soubor_size – velikost uploadnutého souboru v bajtech
- $soubor_name – původní název souboru na uživatelském počítači
Nyní uvedu zdrojový soubor jednoduchého skriptu upload.php, který pak následně blíže popíšu.
|
Popis skriptu
Spodní část je jasná, ta zobrazí formulář pro upload souboru. V první části skriptu je nejdříve dotaz, zdali bylo stisknuto tlačítko „Upload“ a pokud ano, provede se kontrola, zdali zadaný soubor je požadovaného MIME typu. Jestliže ano, pak se provede zkopírování souboru do vyhrazeného adresáře data/, pod takovým názvem, jaký byl u uživatele. Pokud kopírování proběhne úspěšně, vypíše se informační hláška na obrazovku prohlížeče a po té se pomocí funkce mail pošle e-mail na adresu správce serveru, že byl uploadován nový soubor.
Funkce mail funguje jen v případě, že je správně nastaven server. Nastavení lze provést v souboru php.ini (direktivy SMTP a sendmail_from). V případě, že soubor nebude mít odpovídající MIME typ, vypíše se hláška a soubor na server uploadován nebude.
Skript si můžete stáhnout zde. Otestován byl na IIS 5.0 a PHP 4.0.6. Ve skriptu v argumentech funkce mail si musíte samozřejmě nastavit vlastní server a svou e-mailovou adresu.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Vlastní web: Jak nainstalovat WordPress?
24. června 2024 -
Jak zabezpečit váš chytrý telefon před kybernetickými hrozbami
30. listopadu 2023
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024
Lukáš
Led 13, 2010 v 12:03použil sem váš skript na upload ale nejede mi vypadá to že nemám správný typ souboru označen u vás jako MIME. jak jej mám upravyt pro obrázky *.JPG
Adam
Led 13, 2010 v 21:292Lukáš:
do druhe podminky pridejte MIME typ pozadovanych souboru
or $soubor_type==“image/jpeg“ or $soubor_type=“image/pjpeg“ or $soubor_type=“image/jpg“
pripadne muzete i image/gif, image/png atd :o)
Jirka
Led 25, 2010 v 7:07Zkoušel jsem skript použít, ale soubor se nevytvoří (přístupová práva OK), ani se neobjeví žádné hlášení, po kliknutí na tlačítko se zobrazí stejný prázdný formulář jako na začátku.
Anne
Led 28, 2010 v 16:26Adam:
Zdravím, mám zřejmě tentýž problém co dotyčný Lukáš, ale nevím do jaké druhé podmínky přidat MIME?
Saphire
Led 31, 2010 v 19:12To není řešení, Tohle je prasečina!
Nezlobte se na mě, ale je to napsané v register globals -on a na přenos souboru semísto move_uploaded_file(„tmp_name“,“cíl“) použitá ne dvakrát bezpečná f-ce copy()
lukas
Kvě 23, 2010 v 17:49ked dam upload vypise mi v upload.php – undefined variable: akce in c:\wamp…\upload.php on line 15 . co s tym?
Dzejk
Kvě 23, 2010 v 20:07Saphire: jaka prasecina? Vzdyt je to clanek z roku 2001, kdy se pouzivalo uplne jine PHP nez dnes.
ab
Bře 20, 2012 v 15:56totok je kotel starej script , uz 11 let, je mozny, ze uz neni funkcni….