Autor | Zpráva | ||
---|---|---|---|
Jindra Erko Profil * |
#1 · Zasláno: 13. 6. 2017, 08:24:22
Chci povolit uživatelům fotogalerii na mém prvním realizovaném webu , ale jelikož lidi jsou šíleně nedůslední a jsou schopni mi nahrávat na web i 12 MB nezmenšené fotky chtěl bych v rámci uploadu pořešit maximální limit cca na 1 až 2 MB.
Jak se to má správně realizovat? Předpokládám že server dopředu nepozná jak velký bude soubor, takže jediná šance je zpustit průběh nahrávání (klasicky přes formulář enctype="multipart/form-data") a v průběhu načítání až server zjistí že už přenesl 1 MB dat, pozastavit přenos a vyhodit chybovou hlášku? Nebo se to dělá jinak, chytřeji? Jsem začátečník a tak se ptám na ideální řešení, jde jen o soubry JPG a PNG. Jakou funkcí mám počítat kolik bajtů už bylo přeneseno? Vím že existují i tyto nastvaení. php_value upload_max_filesize 100M php_value post_max_size 105M php_value memory_limit 110M Je možné je měnit extra pro jediný adresář, respektive budu mít strom: mujserver.cz/fotky/uzivatel-1/2017/7/foto-1.jpg mujserver.cz/fotky/uzivatel-2/2017/8/foto-1.png Tak kam příp. nahrát .htaccess příkazy a jakým způsobem, díky. Díky moc. |
||
Keeehi Profil |
#2 · Zasláno: 13. 6. 2017, 09:52:38
Jindra Erko:
„Jakou funkcí mám počítat kolik bajtů už bylo přeneseno?“ Nic takového nejde, alespoň ne u apache. Ten totiž funguje tak, že nejdříve počká na dokončení celého přenosu dat od uživatele a pak teprve zavolá PHP script. V té době už je tedy celý soubor nahrán na serveru. Řešením je to násilné ukončování neřešit. Samozřejmě je potřeba na serveru nastavit správné limity a je dobré i v PHP kontrolovat velikost nahraného souboru. Určitě je také potřeba tento limit napsat na stránku, nejlépe přímo nad input pro nahrávání souborů. Pro lidi s novým prohlížečem můžeš přidat ještě javascriptovou kontrolu. Ti co mají prohlížeč starší si prostě počkají, až obrázek nahranou celý a server jim to zamítne. |
||
pcmanik Profil |
#3 · Zasláno: 13. 6. 2017, 11:11:48
Jindra Erko:
Na strane JavaScriptu na to slúži File API s podporou od IE 10+. Samozrejme nesmieš zabudnúť ani na kontrolu na serveri. |
||
Časová prodleva: 6 let
|
0