Jak stáhnout soubor pomocí funkce PHP move_uploaded_file

V určitém okamžiku vaší kariéry budete chtít vytvořit skutečné dynamické webové aplikace. Možná se rozhodnete napsat svou sociální síť. Jako vývojář se pokusíte získat zainteresované uživatele, dát jim možnost nahrát fotky, hudbu a sdílet soubory. V tomto případě musíte vědět a být schopen pracovat s funkcí PHP přesunout nahraný soubor.

Formulář pro sběr dat

PHP podporuje stahování souborů pomocí metody POST. Proto je vyžadován formulář HTML k přenosu dat serveru nebo k uložení na místní počítač. Použijte značku pro výběr samostatného místa, kde by uživatel mohl vybrat soubor. Skripty je třeba nakonfigurovat tak, aby byla data odeslána bez selhání. Zvažte tento proces stažením profilové fotografie.




enctype = "vícenásobná /data formuláře" & gt;





:




Věnujte pozornost atributu enctype = "multipart /form-data". Je to díky tomu, že formulář je nakonfigurován pro příjem dat. Aby uživatelé nepřišli s 25 MB bootloads, ve skrytém poli musíte nutně nastavit limit velikosti obrázků. Pro profilový obrázek je to dost 2 MB, jako v tomto příkladu.

Formulář uvedený výše v akci atributu znamená, že příjem azpracování obrazu se uskuteční ve stejném dokumentu. Pokud vás to zaměňuje a chcete, aby každá akce měla svůj vlastní skript, vložte název skriptu na místo, například create_profile.php. Nyní je v tomto souboru zapsán celý kód, včetně funkce přesunutí nahraného souboru ve formátu PHP.

"Max. velikost souboru specifikovaná v php.ini ',
2 = & Max překročil velikost souboru specifikovaná ve formátu HTML ',
3 = & gt; 'Byla odeslána pouze část souboru',
4 = & gt; 'Soubor, který chcete odeslat, nebyl vybrán.');
//zjistit chyby při odesílání souborů
, ($ _FILES [$ image_fieldname] ['error'] == 0) nebo
die ("Chyba při odesílání souboru". $ Php_errors [$ _ FILES [$ image_fieldname ] ['chyba']]);
//zjistit normální soubor je odeslán, nebo pokus o trhliny
@is_uploaded_file ($ _ FILES [$ image_fieldname] ['tmp_name']) nebo
die ('Vy sovershyete nemorálnosti hanba!'. „First Soubor: "$ {FILES [$ image_fieldname] ['tmp_name']} '');
//Je navrhovaný soubor s obrázkem
@getimagesize ($ _ FILES [$ image_fieldname] ['tmp_name']) or die ("Chyba! Vybraný soubor není obrázek." „Filename {$ _FILES [$ image_fieldname] ['tmp_name']}});
//Přiřazení souboru s jedinečným názvem ke stažení
$ now = time ();
, zatímco (file_exists ($ upload_filename = $ uploads_dir $ Nyní .'- '[název ‚]). $ _ Soubory [$ image_fieldname].') {
$ nyní ++;
}
? & Gt;

V kódu jsou pomocné proměnné:


Myslíte si, že jste udělali všechno správně a tlumočnice chybu? Soubor odmítne zavést do určeného adresáře a zobrazí se na zcela nečekaných místech? Nejprve zkontrolujte php.ini o povolené velikosti v parametru upload_max_filesize. Nejčastěji jde o chybuse vyskytuje v Denveru. Otevřete php.ini (obvykle ve složce php) a nastavte požadovanou velikost:

;;;;;;;;;;;;;;;; 
; Nahrávání souborů;
;;;;;;;;;;;;;;;;

; Zda povolit nahrávání souborů HTTP.
; http://php.net/file-uploads
file_uploads = Zapnuto

; Dočasný adresář pro soubory HTTP (bude použit systémový výchozí, pokud není zadán
;
; http://php.net/upload-tmp-dir
upload_tmp_dir = "***"

; Maximální povolená velikost nahraných souborů.
; http://php.net/upload-max-filesize
upload_max_filesize = 5M

; Max_file_uploads = 50


Pokud pracujete na serveru, požádejte poskytovatele, jehož soubory je možné stáhnout. Na bezplatném hostingu je maximální částka obvykle 2 MBytes. Druhý důvod, proč může kód selhat, je, že je nastaven nesprávný adresář. Zkontrolujte druhý argument mov_uploaded_file, musí obsahovat cestu a nutně jméno.

Související publikace