I was looking all over the place for an answer on how to download etc...
What I personally prefer is to download any file with LoaderMax from Greenshocks AS3 library (which is already included in most of my projects since its a kick-ass lightweight loader.
Instead of specifying a URL which is local i specify a URL which is remote..
lemme show you some code:
public function downloadTxtJpgMp3():void
{
var queue:LoaderMax = new LoaderMax();
emptyLoader(); //this emptys the loader from previous attempts to load any files
queue.append( new DataLoader("http://www.70disco.com/lyrics/delegation_you_and_I.txt",{name:"test_txt" ,format:"text", estimatedBytes:4000}) );
queue.append( new ImageLoader( "http://4.bp.blogspot.com/-WQ3uAvGdPS0/UOB_OPS6rcI/AAAAAAAAKkU/HYaXXHVHTqc/s1600/whatever-dude-whatever.jpg" , {name:"test_img" , estimatedBytes:77000, container:this, alpha:0, scaleMode:"proportionalInside"}) );
queue.append( new MP3Loader( "http://nocturno.nsk.pt/otherpages/funny/mp3/2001-02/Cebola%20Mol/Cebola%20Mol%20-%20Satright%20No%20Chaser%20II.mp3" , {name:"test_mp3" , repeat:0, autoPlay: false}) );
queue.addEventListener(LoaderEvent.COMPLETE, onDownloadComplete);
queue.load();
}
And below is the handler for the COMPLETE event. You can also have handler for ERROR,FAIL,PROGRESS etc you name it..
protected function onDownloadComplete(event:LoaderEvent):void
{
var objects:Array = event.currentTarget.content ;
var firstObjectILoaded: String //txt
var secondObjectILoaded:Bitmap //jpg
var thirdObjectILoaded: Sound //mp3
// ContentDisplay is found within greenshock
firstObjectILoaded = objects[0];
secondObjectILoaded = ((objects[1] as ContentDisplay).rawContent as Bitmap)
thirdObjectILoaded = objects[2];
trace(firstObjectILoaded);
thirdObjectILoaded.play();
}
Remember LoaderMax does not really care whether the file is local or remote, it just loads it into memory..
From that point on you can decide whether you want to save it as a file or just use it and then discard it.
If you want to save it as a file here is how: (iOs example below)
var str:String = File.applicationDirectory.nativePath;
//in iOs you can save on 4 different folder directories (according to apples rules)
// cache, temp, app support, and user documents (i don't cover this below)
appCache = new File(str +"/\.\./Library/Caches"); //cache folder (in which you put files that you dont care being erased. the iOs might delete those files in case of low memory
appTempData = new File(str +"/\.\./tmp"); //temp folder (just files you temporarily want to store
appData = new File(str +"/\.\./Library/Application\ Support"); //any file your application NEEDS in order to operate, this can't be deleted by the os
var fr:FileStream = new FileStream();
fr.open(
appTempData // appTempData or appCache or appData or userDocs
.resolvePath("myCache.txt"),FileMode.WRITE);
fr.writeUTFBytes("works");
fr.close();