views:

91

answers:

2

I'm writing a app with Flex/air,and i need a function that downloading files to the default dir without a pop-up window.i tried to use ftp instead of http but found it's not supported by air.how can i solve this problem?

+1  A: 

I don't think you can do that as it's a Security violation. The user must be prompted with a download window so they can choose the directory. I think the thinking goes "if you don't prompt the user, then a Flash/Flex app could download a bunch of junk to their computer without their permission", and that would make adobe look bad :/. I wish you could though.

You can, however, download it using a server side script without asking the user for permission. I do that with ruby to accomplish what you're describing.

Hope that helps, Lance

viatropos
thank u for ur quick reply.But i wonder how a server side script can put sth to local quietly?i use python and php in my work,and find it difficult to do that with them:(
SpawnCxy
+1  A: 

This should be possible in AIR. I don't know if there's a direct API approach, but you should be able to load the bytes into memory and then flush them into a file. In pseudo-pseudo-code using File and FileStream:

// get the bytes
var loader:URLLoader = new URLLoader();
loader.load("http://www.stackoverflow.com");
...
var bytes:ByteArray = loader.data;

// get the file in the correct location
var f:File = File.documentsDirectory.resolvePath("myfile.txt");

// write the file
var fs:FileStream = new FileStream(f, FileMode.WRITE);
fs.writeBytes(bytes);
fs.close();

There are a few examples out there to look at.

None of this is possible in Flash Player because of the security limits @viatropos suggests.

Michael Brewer-Davis
thank u for ur solution,i'm working on that:)
SpawnCxy
Finally this turns out to be a solution:)
SpawnCxy