AJAX file upload
Moderator: Moderatori
AJAX file upload
as vrea sa fac urmatoarea chestie: un file upload in care dupa ce este apasat butonul submit sa fie afisata o imagine care arata ca imaginea este uploadata iar dupa ce imaginea a fost uploadata ...aceasta sa fie afisata intr-un div.
practic vreau sa fac asa:
- dupa ce a fost apasat butonul submit , o functie care apeleaza upload.php sa fie apelata la un anumit interval de timp pana cand raspunsul intors va fi "uploaded" sau ceva de genu.
ceea ce nu stiu este cum sa "vad" cand poza este uploadata, adica functia mea din javascript apeleaza upload.php dar la ce trebuie "sa se uite" ca sa vada daca fisierul a fost uploadat sau nu?
practic vreau sa fac asa:
- dupa ce a fost apasat butonul submit , o functie care apeleaza upload.php sa fie apelata la un anumit interval de timp pana cand raspunsul intors va fi "uploaded" sau ceva de genu.
ceea ce nu stiu este cum sa "vad" cand poza este uploadata, adica functia mea din javascript apeleaza upload.php dar la ce trebuie "sa se uite" ca sa vada daca fisierul a fost uploadat sau nu?
uite un tutorial: http://www.devpro.it/upload_progress/
- Birkoff
- Senior Member
- Mesaje: 6380
- Membru din: Joi Mar 18, 2004 2:34 pm
- Localitate: Bucuresti
- Contact:
http://www.hotscripts.com/listings/search/
selectezi sa caute doar in scripturile ajax si dai sa caute dupa upload si o sa gasesti destule scripturi utile vezi care iti este mai bun...
selectezi sa caute doar in scripturile ajax si dai sa caute dupa upload si o sa gasesti destule scripturi utile vezi care iti este mai bun...
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.
BBstrumf scrie:hmm....mersi pt raspunsul ultrarapid
am sa ma uit chiar acum sa vad care e ideea, sper sa nu fie insa ceva cu pachete PECL(pt ca am vazut acolo ceva de upload progress si e un pachet pecl cu numele asta) pt ca nu am suport de la host.
In PHP nu poti face progress bar la upload decat daca ai PHP 5.2 sau mai
mare si instalata extensia APC. Alte modalitati de progress bar ar fi pe client,
insa nu e suportat decat in Firefox 3.5, Safari 4 si Chrome 2. S-ar putea sa
mearga si in Firefox 3, dar mi se pare ca da rateuri.
I'm under construction | http://igstan.ro
nu ma intereseaza sa fac un progress bar adevarat(care sa-mi arate cat s-a uploadat si cat mai este de uploadat din fisier) ci un pseudo progress bar, adica sa stiu doar cand fisierul a fost uploadat complet sau nu. Am citit in primul tutorial oferit de oceans ca merge cu temporary files(atata timp cat fisierul temporar inca exista inseamna ca fisierul inca se uploadeaza iar cand fisierul temporar este sters din folderul temporar inseamna ca fisierul a fost uploadat complet). Ceea ce nu am inteles eu inca e succesiunea evenimentelor in uploadarea unui fisier. Din ceea ce am citit pe un forum unii sustin ca tmp_name este creeat cand php-ul inca scrie in fisierul temporar iar altii sustin ca tmp_name este creeat cand fisierul temporar a fost scris complet si asteapta sa se lucreze cu el (sa fie salvat in alt director). Inca nu am incercat cu temporary files pt ca am vrut sa citesc mai mult dar daca varianta a doua este adevarata nu stiu cu ce m-ar ajuta temporary files.
puteti sa imi spuneti si mie din ce stiti ci voi despre aceste doua "teorii"?
puteti sa imi spuneti si mie din ce stiti ci voi despre aceste doua "teorii"?
-
- Senior Member
- Mesaje: 5985
- Membru din: Dum Aug 22, 2004 2:04 am
- Localitate: la birou
- Contact:
Nu stiu nimic de cele doua teorii ... dar cel mai simplu mod fara a modifica la server ceva este sa folosesti flash, care poate sa iti calculeze viteza cu care ai uploadat si cat ai uploadat din fisier -> iti faci tu procentajele.
Deci cauta flash progress bar upload ...
EDIT: Vad ca nu vrei progress bar adevarat ... pai solutia este pur si simplu html/javascript atunci ... faci un iframe cu upload form, bagi imaginea sau ce ai tu, dai submit, cand dai submit in locul frame-ului e afisata o imagine (gen loading) iar apoi cand e gata submit-ul (si raspunde pagina respectiva) atunci afisezi raspunsul.
Deci cauta flash progress bar upload ...
EDIT: Vad ca nu vrei progress bar adevarat ... pai solutia este pur si simplu html/javascript atunci ... faci un iframe cu upload form, bagi imaginea sau ce ai tu, dai submit, cand dai submit in locul frame-ului e afisata o imagine (gen loading) iar apoi cand e gata submit-ul (si raspunde pagina respectiva) atunci afisezi raspunsul.
Amenthes scrie:BBstrumf scrie:hmm....mersi pt raspunsul ultrarapid
am sa ma uit chiar acum sa vad care e ideea, sper sa nu fie insa ceva cu pachete PECL(pt ca am vazut acolo ceva de upload progress si e un pachet pecl cu numele asta) pt ca nu am suport de la host.
In PHP nu poti face progress bar la upload decat daca ai PHP 5.2 sau mai
mare si instalata extensia APC. Alte modalitati de progress bar ar fi pe client,
insa nu e suportat decat in Firefox 3.5, Safari 4 si Chrome 2. S-ar putea sa
mearga si in Firefox 3, dar mi se pare ca da rateuri.
Amenthes, nu cred ca ai vazut link-ul catre un tutorial care nu foloseste APC sau PHP 5.2 si care face progress bar la upload numai ca functioneaza doar pentru un singur fisier la fiecare user care uploadeaza, dar cu cateva imbunatatiri ar rula pentru mai multe si ar fi destul de ok.
@BBstrumf, teoria e in felul urmator, cand cineva selecteaza un fisier ca sa-l trimita catre server, PHP-ul la runtime inregistreaza toti parametrii primiti prin POST , GET , FILES, iar in cazul FILES creaza un fisier tmp(sau mai multe depinde cate fisiere primeste) in care incepe sa stocheze continutul in timp ce-l primeste de la client. Acum pentru ca php-ul creaza fisierul asta la runtime tu nu poti verifica ce nume PHP-ul a atribuit fisierului temporal, si atunci exista 2 metode pentru a trece peste asta, una relativ buna din tutorialul ala cu stocarea fisierelor temporale intr-un fisier si verificarea lor de fiecare data cand alt fisier e uploadat, si alta cu APC care are o utilitate mai functionala pentru ca trimiti un camp si afli numele fisierului temporal direct. La urma PHP-ul ruleaza scriptul si tu te poti folosi de $_FILES[tmp_name] ca sa muti fisierul, pentru ca oricum va fi sters la sfarsitul rularii scriptului.
Daca nu-ti trebuie progress bar, atunci astepti ca scriptul sa se incarce si poti fi sigur ca fisierul s-a uploadat complet, daca nu uploadeaza din cine stie ce cauza(marimea fisierului prea mare,etc) poti construi un error handler sa-ti afiseze erorile formatat.
oceans scrie:Amenthes, nu cred ca ai vazut link-ul catre un tutorial care nu foloseste APC sau PHP 5.2 si care face progress bar la upload numai ca functioneaza doar pentru un singur fisier la fiecare user care uploadeaza, dar cu cateva imbunatatiri ar rula pentru mai multe si ar fi destul de ok.
Tu l-ai folosit vreodata? Sincer eu acum l-am incercat, si intr-adevar se
bazeaza pe o idee pe care am avut-o si eu, dar problema e ca nu merge.
Singurul progress bar care imi apare e cel de la browser.
Ma rog, poate ca am testat pe Windows si de asta, dar in acelasi timp, daca
era asa de bun, pun pariu ca il foloseau si altii si aflam si eu despre el.
I'm under construction | http://igstan.ro
Nu l-am folosit in productie,il aveam de mult salvat pentru viitor sa-l imbunatatesc sa mearga pentru un user mai multe fisiere dar nu am mai apucat insa ca idee e ok, acum l-am testat tot pe windows si merge, bine un fisier de vreo 10mb.
Daca ceva nu e popular nu inseamna ca e prost, dar nici ca e bun. APC bate pentru ca merge direct la numele fisierului temporal, cu metoda asta trebuie mai multe operatii inutile dar care in final functioneaza.
Daca ceva nu e popular nu inseamna ca e prost, dar nici ca e bun. APC bate pentru ca merge direct la numele fisierului temporal, cu metoda asta trebuie mai multe operatii inutile dar care in final functioneaza.
oceans scrie:...acum l-am testat tot pe windows si merge, bine un fisier de vreo 10mb...
Ce inseamna ca ti-a mers? Mie unul nu mi-a aparut nimic. Am uploadat un
fisier de aprox. 300M. La prima incercare a aparut ceva pe la 11M, apoi gata.
Am incercat de vreo 5-6 ori, se blocheaza request-ul Ajax.
A, da, si poate lucrul cel mai important. Cu ce versiune de PHP ai testat? Eu
am avut un 5.2.10.
I'm under construction | http://igstan.ro
Pai am facut asa, ca sa reproduc cat mai bine scenariu unui upload de pe internet unde dureaza mai mult, am schimbat iti arat exact cum am in php.ini directorul de upload catre un usb flash drive asta facand citirea mai greoie numai bine sa poti observa uploadul:
Apoi in whileuploading.php am pus:
Si m-am jucat si cu latency putin si am pus la 10 milisecunde, adica am schimbat in index.php:
Si trebuie sa-ti mearga, oricum a fost construit prin 2005 deci ar trebui sa fie compatibil si cu o versiune mai mica de PHP.
//LE: am uitat sa-ti zic, testul l-am facut cu 5.3.0 pe windows
Cod: Selectaţi tot
upload_tmp_dir="K:\tmp"
Apoi in whileuploading.php am pus:
Cod: Selectaţi tot
$tmpdir = 'K:/tmp';
Si m-am jucat si cu latency putin si am pus la 10 milisecunde, adica am schimbat in index.php:
Cod: Selectaţi tot
var bUploaded = new BytesUploaded('whileuploading.php', 10);
Si trebuie sa-ti mearga, oricum a fost construit prin 2005 deci ar trebui sa fie compatibil si cu o versiune mai mica de PHP.
//LE: am uitat sa-ti zic, testul l-am facut cu 5.3.0 pe windows
oceans scrie:am uitat sa-ti zic, testul l-am facut cu 5.3.0 pe windows
Am facut si eu adineauri, tot pe 5.3 cu Windows. Se pare ca merge mai bine,
dar asta sigur e din cauza ca am pus la latenta o valoare mai mica. Si am
mai observat ca trebuie sa resetez sesiunea ca sa mearga si incercarile
ulterioare.
I'm under construction | http://igstan.ro
mersi tuturor pt ce ati discutat aici pt ca am avut si eu de invatat si m-am lamurit cum sta treaba.
pana cand o sa se integreze in core uploadprogress-ul pecl(pt ca asta am auzit ca se va intampla cat de curand, sper ) am sa raman la varianta lui Pirahna, pur si simplu cand termina de downloadat fisierul sa scrie un nou nod intr-un fisier xml cu un id pe care il are si campul file din html(asta ca sa pot sa-l folosesc pt mai multe fisiere deodata) si functia din javascript va apela fisierul xml(daca gaseste nodul cu id-ul respectiv inseamna ca fisierul a fost uploadat....daca nu-l gaseste inseamna ca nu s-a uploadat inca).
suna promitator si varianta cu flash si js dar nu am gasit o resursa ok pe net din care sa ma inspir(poate nu am vazut eu) asa ca @Pirahna as fi recunoscator pt un link
pana cand o sa se integreze in core uploadprogress-ul pecl(pt ca asta am auzit ca se va intampla cat de curand, sper ) am sa raman la varianta lui Pirahna, pur si simplu cand termina de downloadat fisierul sa scrie un nou nod intr-un fisier xml cu un id pe care il are si campul file din html(asta ca sa pot sa-l folosesc pt mai multe fisiere deodata) si functia din javascript va apela fisierul xml(daca gaseste nodul cu id-ul respectiv inseamna ca fisierul a fost uploadat....daca nu-l gaseste inseamna ca nu s-a uploadat inca).
suna promitator si varianta cu flash si js dar nu am gasit o resursa ok pe net din care sa ma inspir(poate nu am vazut eu) asa ca @Pirahna as fi recunoscator pt un link
Înapoi la “Librarii Javascript”
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 16 vizitatori