ugrás a tartalomhoz

Feltöltés progress kijelzése URLLoader esetében

blacus · 2010. Már. 15. (H), 11.41
Sziasztok!

Egy képfeltöltőt készítek flex-ben, ami a kliensen átméretezi a képet, továbbá a kép forgatható is.

A Filereference osztállyal történik a kép kiválasztása, de a további feldolgozásra át kell konvertálni egy Bitmap objektummá és ezen történik az átméretezés és a forgatás és ez a Bitmap objektum kerül feltöltésre.

Ezt a feltöltést egy URLLoader objektum végzi és ez sajnos nem hívja meg a progress eseményt (csak letöltéskor működik). Szeretném azonban a feltöltés menetét kijelezni egy progressbar-on és az lenne a kérdésem, hogy erre létezik-e valamilyen workaround.

Nézelődtem már a google-n, de nemigen találtam rá megoldást. de hátha itt akad egy guru :)

Üdv, laci
 
1

ProgressEvent.PROGRESS esemeny

carstepPCE · 2010. Már. 16. (K), 08.56
Szia a targyban levo esemenyre kell esemenyt feltenni.

_docFileRef.addEventListener( ProgressEvent.PROGRESS, _onProgressChange );

private function _onProgressChange( event:ProgressEvent ):void
{
	prgbarUpload.setProgress( event.bytesLoaded, event.bytesTotal );
}
udv
Sanyi

UI: amikor helyi gepen teszteled, nagyon nem jon ki a progressbar mukodese file feltoltesekor
2

A dolog lényege éppen az,

blacus · 2010. Már. 16. (K), 10.13
A dolog lényege éppen az, hogy nem a Filereference példány progress eseményét hívom meg, hanem az URLLoader objektum progress eseményét, mivel a FileReference.data változón még ügyködnöm kell és ezt át kell alakítanom egy Bitmap objektummá.

A kód nagyjából:
fileRef.addEventListener(Event.COMPLETE, fileRef_complete);

private function fileRef_complete(e:Event):void {
   var loader:Loader = new Loader();
   loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(e:Event):void {
      var bmd:BitmapData = Bitmap(e.currentTarget.content).bitmapData;
      // átméretezés, további kód
   }
   loader.loadBytes(fileRef.data);
}


Mivel a fileRef.data tulajdonság read-only, nem tudom neki visszaadni a Bitmap objektumot, ezért kell az URLLoader-rel feltölteni a képet. Ennél viszont nem megy a progress event és erre kellene valami kerülő megoldás (ha van)

Itt látható a dolog működés közben.
3

...

carstepPCE · 2010. Már. 16. (K), 19.57
Nem tudom talaltal e mar megoldast, de megprobalhatsz egy URLRequest objektumot letrehozni es a Filereference osztaly upload metodusat hasznalni feltolteshez, mivel annak elso parametere is URLRequest objektumot var valahogy igy

	var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
	var uploadRequest:URLRequest = new URLRequest('yourImageUploadURL.php');
	uploadRequest.requestHeaders.push (header);
	uploadRequest.method = URLRequestMethod.POST;
	uploadRequest.data = yourBitmapData.getPixels(yourBitmapData.rect);
udv
Sanyi