Manußl PHP | ||
---|---|---|
P°edchßzejφcφ | Dal╣φ |
PHP umo╛≥uje zpracovßnφ uploadu soubor∙ z jakΘhokoli prohlφ╛eΦe vyhovujφcφho RFC-1867 (co╛ zahrnuje mj. Netscape Navigator 3 a pozd∞j╣φ, Microsoft Internet Explorer 3 se zßplatou od Microsoftu, nebo pozd∞j╣φ bez zßplaty). Tato schopnost umo╛≥uje lidem uploadovat textovΘ i binßrnφ soubory. S autentizacφ poskytovanou PHP a s funkcemi pro manipulaci se soubory mßte plnou kontrolu nad tφm, kdo smφ uploadovat a co se mß ud∞lat s uploadovan²m souborem.
Nezapome≥te, ╛e PHP podporuje takΘ uploady metodou PUT tak, jak se pou╛φvß v Netscape Composeru a v editoru Amaya od W3C. Pro bli╛╣φ detaily viz Podpora metody PUT.
Obrazovka pro upload souboru m∙╛e b²t tvo°ena specißlnφm formulß°em, kter² vypadß podobn∞ jako tento:
Varovßnφ |
Hodnota MAX_FILE_SIZE je z hlediska prohlφ╛eΦe pouze informativnφ. Je snadnΘ ji obejφt. Tak╛e nepoΦφtejte s tφm, ╛e prohlφ╛eΦ se bude chovat tak, jak si p°ejete. Nastavenφ maximßlnφ velikosti v PHP v╣ak samoz°ejm∞ nem∙╛e b²t obelst∞no. |
Prom∞nnΘ definovanΘ pro uploadovanΘ soubory se li╣φ v zßvislosti na verzi a konfiguraci PHP. Pokud je aktivnφ volba track_vars, bude inicializovßno pole $HTTP_POST_FILES/$_FILES. KoneΦn∞, souvisejφcφ prom∞nnΘ mohou b²t inicializovßny jako globßlnφ, pokud je zapnuta volba register_globals. Ov╣em pou╛φvßnφ globßlnφch prom∞nn²ch nenφ doporuΦeno. Po ·sp∞╣nΘm uploadu budou v cφlovΘm skriptu definovßny nßsledujφcφ prom∞nnΘ:
Poznßmka: track_vars je od PHP 4.0.3 v╛dy zapnuto. U PHP 4.1.0 a pozd∞j╣φch m∙╛e b²t pou╛ito $_FILES namφsto $HTTP_POST_FILES. $_FILES je v╛dy globßlnφ prom∞nnß, tak╛e by se nem∞la pou╛φvat specifikace global pro prom∞nnou $_FILES.
$HTTP_POST_FILES/$_FILES obsahuje informace o uploadovanΘm souboru.
Obsah $HTTP_POST_FILES je takov²to (uv∞domte si, ╛e se p°edpoklßdß pou╛itφ nßzvu uploadovanΘho souboru 'userfile' tak, jako v p°φkladu v²╣e):
Originßlnφ nßzev souboru na klientskΘm poΦφtaΦi.
MIME typ souboru, pokud prohlφ╛eΦ tuto informaci poskytuje (nap°. "image/gif").
Velikost uploadovanΘho souboru v bytech.
DoΦasn² nßzev souboru, pod nφm╛ byl uploadovan² soubor ulo╛en na server.
Poznßmka: PHP 4.1.0 a pozd∞j╣φ podporujφ zkrßcen² nßzev prom∞nnΘ $_FILES. PHP 3 nepodporuje $HTTP_POST_FILES.
Obsah prom∞nnßch v situaci, kdy je prom∞nnß register_globals zapnuta nastavenφm v souboru php.ini (uv∞domte si, ╛e se p°edpoklßdß pou╛itφ nßzvu uploadovanΘho souboru 'userfile' tak, jako v p°φkladu v²╣e):
$userfile - DoΦasn² nßzev souboru, pod kter²m byl uploadovan² soubor ulo╛en na server.
$userfile_name - Originßlnφ nßzev souboru nebo cesta na odesφlajφcφm systΘmu.
$userfile_size - Velikost uploadovanΘho souboru v bytech.
$userfile_type - MIME typ souboru, pokud prohlφ╛eΦ tuto informaci poskytuje (nap°. "image/gif").
Poznßmka: Nastavenφ register_globals = On se nedoporuΦuje z bezpeΦnostnφch a v²konnostnφch d∙vod∙.
Soubory se implicitn∞ uklßdajφ do systΘmovΘho adresß°e pro doΦasnΘ soubory, pokud nebylo direktivou upload_tmp_dir v souboru php.ini stanoveno jinak. SystΘmov² adresß° pro doΦasnΘ soubory m∙╛e b²t zm∞n∞n nastavenφ prom∞nnΘ prost°edφ TMPDIR v prost°edφ, kde PHP b∞╛φ. Nastavenφ za pou╛itφ putenv() z PHP skriptu nebude fungovat. Tato prom∞nnß prost°edφ m∙╛e b²t takΘ pou╛ita k uji╣t∞nφ se, ╛e v╣echny ostatnφ operace pracujφ s uploadovan²mi soubory.
P°φklad 19-2. Ov∞°ovßnφ uploadu souboru Nßsledujφcφ p°φklady jsou pro verze PHP 4 vy╣╣φ ne╛ PHP 4.0.2. (viz funkce is_uploaded_file() a move_uploaded_file()).
|
PHP skript, kter² p°ijφmß uploadovanΘ soubory, by m∞l implementovat ve╣kerou logiku pro stanovenφ, co by se m∞lo ud∞lat s uploadovan²m souborem. M∙╛ete nap°. pou╛φt prom∞nnou $HTTP_POST_FILES['userfile']['size'] pro zahozenφ soubor∙, kterΘ jsou p°φli╣ malΘ nebo velkΘ. Mohli byste pou╛φt takΘ prom∞nnou $HTTP_POST_FILES['userfile']['type'] pro filtraci soubor∙ podle MIME datovΘho typu. Bez ohledu na °e╣enφ, soubor by m∞l b²t smazßn nebo p°esunut jinam.
Soubor bude automaticky smazßn z doΦasnΘho adresß°e na konci skriptu, pokud nebyl p°esunut jinam nebo p°ejmenovßn.
P°edchßzejφcφ | Dom∙ | Dal╣φ |
Cookies | Nahoru | ╚astß ·skalφ |