Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Uploadify - upload tylko pierwszego pliku z kolejki i zonk
erix
post 21.07.2010, 21:03:04
Post #1





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ta, nadszedł kolejny moment, w którym moja mózgownica już kapituluje i nie znajduje kolejnych pomysłów, więc piszę wątek. A jak do tej pory, zadawałem za trudne pytania, na które nie doczekałem się odpowiedzi, ale a nuż... winksmiley.jpg

Przechodząc do meritum:
  • korzystam z Uploadify (http://uploadify.com) 2.x
  • dostosowuję multi-upload do nowej wersji (bo przykłady są dla 1.5), wszystko działa
  • jednak po dopięciu do mojej mini-aplikacji coś jest nie tak


Jeśli zajawka jest ciekawa, więcej opisu:
mianowicie, w Uploadify, jest trochę dziwnych rzeczy, powiedziałbym że namieszane, ale szczegół, nie o tym temat.

Odpaliłem sobie na poligonie coś takiego:
[JAVASCRIPT] pobierz, plaintext
  1. $("#fileUpload2").uploadify({
  2. 'uploader': 'js/uploadify.swf',
  3. 'script': 'upload.php',
  4. 'folder': 'files',
  5. 'multi': true,
  6. 'buttonText': 'Select Files',
  7. 'displayData': 'speed',
  8. 'simUploadLimit': 1,
  9. onSelect: function(event, ID, file){
  10. var zuo = $('#zuo')
  11. .append('<li>'+file.size+' '+ID+'</li>')
  12. .find('li')
  13. .last()
  14. .data('size', file.size)
  15. .data('ID', ID)
  16. .append('<a href="">wyp</a>')
  17. .find('a')
  18. .last()
  19. .click(function(e){
  20. e.preventDefault();
  21. $('#fileUpload2').uploadifyCancel($(this).parent().data('ID'));
  22. $(this).parent().remove();
  23. });
  24. return false;
  25. },
  26. onComplete: function(a,b,c,d){
  27. alert('ZUOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO!');
  28. return false;
  29. }
  30. });
[JAVASCRIPT] pobierz, plaintext


I ten kod działa bez problemów:
  • własna obsługa kolejki śmiga
  • wywalanie z niej obiektów również
  • powiadomienie o uploadzie każdego z obiektów nie sprawia problemów - skrypt docelowy jest wywoływany i za każdym razem otrzymuję odpowiedniego alerta


Jednakże w kontekście mojej aplikacji dzieje się coś dziwnego: uploadowany jest tylko pierwszy plik z kolejki, zdarzenie onComplete nie jest wyzwalane, a podejrzenie zwracanego wyniku z onProgress pokazuje, że upload nastąpił w 100%.

Postanowiłem przekopać google, znalazłem jeden wątek na StackOverflow, ale niczego ciekawego się nie dowiedziałem.

Nie liczę, którą godzinę już nad tym siedzę, ale przyznam, że daje mi to trochę popalić.

Co jeszcze z przydatnych informacji - testowane pod najnowszym Fx-em i jednym z ostatnich buildów Chromium. W obu zachowuje się tak samo.

Na domiar złego, jeśli nie obsłużę w swojej aplikacji zdarzeń dla onComplete i onProgress, gdy polegam na standardowych funkcjach obsługi, sytuacja jest identyczna.

Początkowo myślałem, że jest to spowodowane tym, iż chowałem warstwę z uploaderem (display: none i Flash Player mrozi animację) - to też jednak sprawdziłem i pudło. Nadal jest to samo.

Aplikacja nie jest szczególnie skomplikowana - to coś w stylu kreatora i kolejki. Raczej niczego w środku szczególnego nie ma, co mogłoby coś takiego powodować; sprawdziłem już chyba wszystko.

Jakieś pomysły? scriptAccess chyba nie powinien mieć na to wpływu; żądania są w obrębie jednego hosta, zresztą - surowy przykład działa...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
bikerszymek
post 21.07.2010, 21:44:29
Post #2





Grupa: Zarejestrowani
Postów: 91
Pomógł: 13
Dołączył: 23.08.2008

Ostrzeżenie: (0%)
-----


Zacznę od przyznania, że faktycznie Uploadify jest dziwne, mieliśmy z nim nie jeden problem, również bliźniaczo podobny do Twojego. Aplikacja stojąca na symfony, w wersji dev uploadowała pliki bez problemu (wykluczając bardzo dziwny sposób samego zapisu i dostępu do obiektu file), natomiast po przełączeniu się na tryb produkcyjny uploadował się jedynie pierwszy plik, po kilku godzinach postanowiłem usunąć z kontrolera sfView::NONE i jakimś cudem zadziałało. Nie mam jak odnieść tego do Twojego przypadku ale mam nadzieje, że w jakiś sposób okaże się to pomocne.

Ten post edytował bikerszymek 21.07.2010, 21:45:56
Go to the top of the page
+Quote Post
erix
post 21.07.2010, 21:56:32
Post #3





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Tu nie ma żadnego frameworka jeśli chodzi o back-end, więc niestety, za wiele nie pomoże...

Podejrzewam, że któraś z funkcji/metod/bibliotek może się gryźć, ale sprawdziłem chyba wszystkie kombinacje (przed chwilą próbowałem wywalić jquery.fx.color, ale nic to nie dało...), doctype na Strict.

Może jeszcze uda mi się wydumać, jak hooki do debugowania w ActionScripcie dorzucić...

Cytat
Nie mam jak odnieść tego do Twojego przypadku ale mam nadzieje, że w jakiś sposób okaże się to pomocne.

A nie pamiętasz może, jakie były różnice w wyplutym kodzie, jakieś szczególne elementy w DOM, etc?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
bikerszymek
post 22.07.2010, 07:35:20
Post #4





Grupa: Zarejestrowani
Postów: 91
Pomógł: 13
Dołączył: 23.08.2008

Ostrzeżenie: (0%)
-----


Cytat(erix @ 21.07.2010, 22:56:32 ) *
A nie pamiętasz może, jakie były różnice w wyplutym kodzie, jakieś szczególne elementy w DOM, etc?


Niestety nie.
Go to the top of the page
+Quote Post
wookieb
post 22.07.2010, 07:57:29
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Temat dotyczy głównie JS
http://forum.php.pl/index.php?showtopic=15...mp;#entry765763

Ten post edytował wookieb 22.07.2010, 07:57:54


--------------------
Go to the top of the page
+Quote Post
erix
post 22.07.2010, 10:04:46
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No tak, ale celowo nie podałem kodu ze względu na to, że problem jest - tak naprawdę - od niego niezależny (co testowałem kilkukrotnie).

Cytat
Temat dotyczy głównie JS

Teoretycznie - jak pisałem, znalazłem w Sieci podobny problem, również podany kod JS, ale w nim nie było praktycznie nic. Robiłem też u siebie różnicówkę, w postaci wywalenia całego JS-a i ręcznego odpalenia uploadera (łącznie ze zmianą doctype).

Jednak w środku nocy, w jakiś niezrozumiały dla mnie sposób - zaczęło działać. Szczerze mówiąc, do tej pory nie mogę za bardzo zrozumieć, w jaki to magiczny sposób się stało.

Z tego, co pamiętam, to zrobiłem rzecz następująco: przy konfigurowaniu instancji Uploadify, nie ustawiałem własności onComplete i onProgress. Zgodnie z dokumentacją, te zdarzenia są wyzwalane przez animację odpowiednio po wysłaniu pliku i zmianie postępu operacji.

No i - z tego co mi jedynie przychodzi do głowy - wniosek nasuwa się jeden i nie jest on do końca powiązany z JS. Mianowicie, ustawienie powyższych własności blokuje jakiekolwiek późniejsze przeciążanie. Czyli gdy ktoś próbuje co plik zmienić handler do którejś z operacji przez uploadifySettings i ponowne ustawienie jak w konstruktorze - kaszana.

Ustawienie tychże zdarzeń przy wykorzystaniu unbindowania i ponownego bindowania wewnętrznych skryptu - uploadifyComplete i uploadifyProgress odblokowało ustrojstwo... I podejrzewam, że jest to jakiś wewnętrzny problem flasha, bo raz ustawionego zdarzenia wywoływanego przez External.call nie można po prostu przeciążyć... I to jest ból, na który zmarnowałem 2 dni.

Jest jeszcze jedna ciekawa sprawa - metodę do uploadu wywoływałem z jednej podfunkcji anonimowej, struktura przedstawiała się mniej-więcej tak:
[JAVASCRIPT] pobierz, plaintext
  1. var flashUpload = function(ID, pointer, file){
  2. $('#handle').unbind(...).bind(...).uploadifyUpload(ID);
  3.  
  4. }
  5.  
  6. var beginUpload = function(){
  7. //...
  8.  
  9. flashUpload($(this).data('ID'), pointer, $(this).data('file'));
  10.  
  11. }
[JAVASCRIPT] pobierz, plaintext

to jest istotna część skryptu, reszta nie miała wpływu; sprawdziłem kilkukrotnie

W tej konfiguracji Uploadify zachowywało się dość dziwnie. Przeniesienie kodu z metody flashUpload bezpośrednio do ciała beginUpload rozwiązało problemy. Do tej pory nie wiem, dlaczego...

Cóż, współpraca Flasha z przeglądarkami zawsze była trochę dziwna. tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
wookieb
post 22.07.2010, 10:11:04
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(erix @ 22.07.2010, 11:04:46 ) *
I podejrzewam, że jest to jakiś wewnętrzny problem flasha, bo raz ustawionego zdarzenia wywoływanego przez External.call nie można po prostu przeciążyć... I to jest ból, na który zmarnowałem 2 dni.

ExternalInterface nie wywołuje zdarzeń tylko funkcje jakie podasz w argumencie. Wówczas zostanie odpalony aktualny kod funkcji, więc może po prostu uploadify gdzieś blokował przechwycenie zdarzenia. Generalnie ExternalInterface nigdy mnie nie zawiódł nawet przy dynamicznie zmienianym kodzie JS.



--------------------
Go to the top of the page
+Quote Post
erix
post 22.07.2010, 10:38:16
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ok, inaczej - miałem na myśli to, że przy wywoływaniu ExternalInterface.call parametru nie dało się przeciążyć. Nie zagłębiałem się mocno w to, co siedziało w bebechach Uploadify od strony AS. winksmiley.jpg

Cytat
więc może po prostu uploadify gdzieś blokował przechwycenie zdarzenia

Możliwe. Implementacja JS Uploadify jest - hmm - lekko mówiąc: dziwna...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 03:47