2009-10-02 15 views
8

Pracuję nad uploaderem obrazów w programie Flash. Używam FileReference.browse do przeglądania obrazu, a następnie zmiany rozmiaru tego obrazu na 1000 x 1000 px, jeśli obraz jest bardzo duży, a następnie przesłać na serwer. Chcę wyświetlić postępy postępu przesyłania obrazu.Przesyłanie obrazu postępów za pomocą URLLoader AS3

Używam programu URLLoader do wysyłania danych binarnych obrazów o zmienionym rozmiarze, ale program ProgressEvent w module URLLoader nie działa tak, jak powinien. Wystrzeliwany jest dopiero po przesłaniu obrazu, zamiast pokazywania pośredniego postępu. ProgressEvent w FileReference działa doskonale, aby pokazać postęp przesyłania plików pośrednich.

Czy istnieje sposób wyświetlania postępu przesyłania za pomocą URLLoader? lub

Czy możemy użyć FileReference do załadowania zmodyfikowanego obrazu, a następnie wywołania FileReference.upload, w ten sposób będzie można wyświetlić aktualny pasek postępu.


Update 1:
Ale moim problemem jest to, że mam rozmiaru przeglądanej obraz po użyciu FileReference.browse i chcę przesłać zmienionym rozmiarze obrazów, a nie oryginalny obraz w obiekcie FileReference po przeglądania. Jak korzystać z Filereference.upload w tym przypadku? Filereference.upload prześle oryginalny obraz, a nie ten o zmienionym rozmiarze. Każdy pomysł, jak umieścić obraz o zmienionym rozmiarze w obiekcie Filereference, a następnie użyć FileReference.upload.


Aktualizacja 2:
Nie mógł ustawić dane manekina FileReference, dane są tylko do odczytu właściwości.


Update 3:
Ale to ma taki sam problem nie pokazuje postępu przesyłania obrazu, z powyższego linku.

„Niestety nie ma problemu z dostaniem wydarzenie postęp We cant pokazać żadnego postępu podczas wysyłania danych do serwera, ponieważ flash go nie obsługuje "

Dokładnie szukam rozwiązania dla powyższego problemu. URLLoader działa dobrze, aby opublikować dane obrazu.

+0

Robię dokładnie to samo i natknąłem się na ten sam problem. Zastanawiam się nad umieszczeniem "nieprecyzyjnego paska ładowania" podczas przesyłania. – Danita

+0

Biorąc pod uwagę, że w moim przypadku wynikowy plik * zwykle * ma mniej więcej ten sam rozmiar, zakończyłem konfigurowanie licznika czasu z szacowanym czasem, w którym przesyłanie powinno zająć * większość * sytuacji, i otrzymanie tego czasu, aby wystrzelić ProgressEvents, aby pasek postępu został zaktualizowany . To lepsze niż nic, a użytkownicy nie mogą odróżnić. – Danita

+0

To jest to, co nazywam "doskonałym rozwiązaniem". – Tom

Odpowiedz

0

Skorzystaj z FileReference.upload, do której konkretnie służy ta metoda, a otrzymasz wskaźnik postępu.

+0

Nie próbuje przesłać oryginalnego pliku, ale ByteArray kodowania JPEG wynikowej zmiany rozmiaru oryginalnego pliku. – Danita

+0

Hmm, mógłbym przysiąc, że oryginalne pytanie nie wspomniało o tym ... no cóż, przesłałem nową odpowiedź, która odnosi się do sytuacji, która jest obecnie reprezentowana. – JStriedl

4

URLLoader jest skonfigurowany w taki sposób, że NIE MOŻE otrzymywać zdarzeń postępu, dopóki ładowanie nie zostanie zakończone, jak podano w dokumentach HERE. Być może będziesz w stanie użyć numeru URLStream, aby uzyskać postęp, jak chcesz? Nie jestem pewien, czy zdarzenia postępu dla URLStream wystrzeliwują tylko w celu pobrania odpowiedzi serwera, lub jeśli wystrzelą do pełnej transakcji (upload & download), dokumenty nie wydają się precyzyjnie określać.

+1

To zostało dwukrotnie wznowione ... Zastanawiam się, czy ktoś próbował go i potwierdził, czy URLStream wywołuje odpowiednie zdarzenia postępu? Czytałem gdzie indziej, że nie, ale jak dotąd nie ma ostatecznego źródła ... No cóż. – Cameron

+0

Nie widzę niczego w URLStream, które sugerowałoby, że można go użyć do przesłania czegokolwiek! Dokumentacja szczegółowo opisuje pobieranie, ale nie ma nawet metody przesyłania. Czy możesz określić, w jaki sposób używałbyś go do przesłania pliku? –

Powiązane problemy