Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Canceling file upload
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Subiectul anterior :: Subiectul următor  
Autor Mesaj
joe_black



Data înscrierii: 03/Mai/2006
Mesaje: 30

Trimis: Lun Ian 21, 2008 7:10 pm    Titlul subiectului: Canceling file upload  

Am un script care face upload la fisiere de max 50M.
Mi-am instalat pecl/apc ca sa vad un progress bar .
am setat post-limit la 51M si upload file la 50M. si
<input type="hidden" name="MAX_FILE_SIZE" value="52428800" > in form

Toate bune si frumoase insa, cand un fisier imi depaseste 50M nu se opreste si nu intoarce eroare in script ci incarca 50M, scrie eroare in error_log dar scriptu in browser nu se opreste, trimite date pana cand max_execution_time il opreste!

Cum opresc uploadul fisierului ? pot sa ii determin marimea dinainte cu ajutorul pecl/APC!
Sus  
matzipan



Data înscrierii: 22/Ian/2008
Mesaje: 11

Trimis: Mar Ian 22, 2008 11:02 pm    Titlul subiectului:  

Folosesti $_FILES["file"]["size"] ?
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 2764
Locație: Targoviste City

Trimis: Mar Ian 22, 2008 11:26 pm    Titlul subiectului:  

nu, $_FILES iti da valoarea cand fisierul e deja pe server... altceva, eu nu prea stiu. Ai putea ceva cu javascript dar, daca e disabled e cam nasol, aceeasi situatie http://www.google.ro/search?q=javascript+file+size
Sus  
Pirahna



Data înscrierii: 22/Aug/2004
Mesaje: 4258
Locație: acasa , in pat

Trimis: Mar Ian 22, 2008 11:50 pm    Titlul subiectului:  

Hello joe_black, nu te-am mai vazut de mult pe aici.

Un upload sau download stiu ca se termina cand browserul vede un end-of-file ... in cazul tau ar trebui sa folosesti ajax si o data la 30 de secunde sa verifice dimensiunea fisierului temporar (pentru ca din cate stiu un upload scrie direct acolo ce urca) ...

Daca depaseste valoarea ta, dai un redirect la pagina ta pe una cu eroare (sau pe aceeasi pagina, vezi tu).

In rest mai am niste idei dar sunt complicate si mai putin functionale.
Oricum, pot sa spun ca Google de exemplu nu a remediat problema asta ... ei inca permit uploadul de 100-200 de mega si apoi iti spun ca ai gresit, ca limita e 50.
Sus  
vectorialpx



Data înscrierii: 01/Mar/2005
Mesaje: 2764
Locație: Targoviste City

Trimis: Mar Ian 22, 2008 11:56 pm    Titlul subiectului:  

mi se pare ca asemenea face si yahoo si, mi se pare cea mai sigura varianta...
verifici dimensiunea si, daca e prea mare faci unlink
Sus  
Pirahna



Data înscrierii: 22/Aug/2004
Mesaje: 4258
Locație: acasa , in pat

Trimis: Mie Ian 23, 2008 12:10 am    Titlul subiectului:  

octavian a scris: mi se pare ca asemenea face si yahoo si, mi se pare cea mai sigura varianta...
verifici dimensiunea si, daca e prea mare faci unlink

Si cel mai important, afisezi eroarea :P
Sus  
joe_black



Data înscrierii: 03/Mai/2006
Mesaje: 30

Trimis: Joi Ian 24, 2008 5:23 pm    Titlul subiectului:  

Citat: Un upload sau download stiu ca se termina cand browserul vede un end-of-file ... in cazul tau ar trebui sa folosesti ajax si o data la 30 de secunde sa verifice dimensiunea fisierului temporar (pentru ca din cate stiu un upload scrie direct acolo ce urca) ...

Cum determini care este numele fisierului temporar, avand in vedere ca el apare in $_FILES doar dupa ce a fost uploadat cu success pe server, iar daca are marimea mai mare Apache nu mai scrie fisierul temporar?
Tocmai am aflat asta prin experimente :)

Noroc cu pecl/ACP de care v-am zis inainte, care iti afiseaza dinamic marimea fisierului de uploadata , pathu catre fisieru_temporar , cat s-a uploadat etc. iar. F. IMPORTANT INTOARCE FALSE DACA APACHE-U REFUZA UPLOADU FISERULUI.

Browserul trimite chiar daca serveru i-a refuzat fisieru adica, daca marimea fisierului depaseste limitele impuse sau oricare alta conditie nu este indeplinita serveru nu mai primeste date .. dar nu intrerupe conexiunea.
Asa ca trebuia sa o intrerup eu. Oricum foloseam Ajax ca sa afisez progresul uplodului si a mai ramas sa scriu eroarea in sesiune si sa fac redirect.


Sper ca am clarificat si pe altii.
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community