Upload Image from Camera in Mobile Adobe AIR Android
For some reason I really struggled to upload a File (bytes) that I had in memory. It's easy to upload with the FileReference class, but that has an order of what methods can be called dependent on the browse() method being called. In this case, I have an Android <s:MobileApplication> app that uses the CameraUI class to take a picture and upload.
The key is taking the File that is returned, reading the bytes, and using a 3rd party library called MultipartURLLoader (which URLLoader can't do) to upload it.
private var myCam:CameraUI;
private var pictureFromCamera:File;
private var myByteArray:ByteArray;
/** This method you're used to seeing. The handler for when a user takes a picture */
protected function creationCompleteHandler(event:FlexEvent):void
myCam = new CameraUI();
myCam.addEventListener(MediaEvent.COMPLETE, onPictureTakenComplete, false, 0, true);
* Handler for when user closes camera with a picture. MediaEvent (AIR only).
private function onPictureTakenComplete(evt:MediaEvent):void
myByteArray = new ByteArray();
pictureFromCamera = evt.data.file;
//load file into bytes
var myFileStream:FileStream = new FileStream();
/** method that uploads to server using a 3rd party lib */
public function upload_clickHandler(e:Event):void
var ml:MultipartURLLoader = new MultipartURLLoader();
ml.addEventListener(Event.COMPLETE, onUploadComplete, false, 0, true);
//add file bytes
ml.addFile(myByteArray, pictureFromCamera.name, 'file');