air 实现
一 直接根据访问的url 保存到 本地, 然后可以根据保存 的路径 显示本地图片.
var myURLLoader:URLLoader=new URLLoader()
var myURLReq:URLRequest=new URLRequest();
myURLReq.url=sAcvideAddress;
myURLLoader.dataFormat=URLLoaderDataFormat.BINARY;
myURLLoader.addEventListener("complete", function(e:Event):void
{
saveSwfContentToLocal(e, FileName) //这样保存本地的文件和服务器的文件名一直.
});
myURLLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
myURLLoader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
myURLLoader.load(myURLReq);
//得到保存本地的路径 ,
var desktop:File=File.applicationStorageDirectory;
var sAcvideUrl:String=desktop.nativePath + "//image//" + FileName;
.....
显示本地图片.
..............
private function securityErrorHandler(event:SecurityErrorEvent):void
{
trace("securityErrorHandler: " + event);
outputLogMessage(event.errorID + " " + event.text);
}
private function ioErrorHandler(event:IOErrorEvent):void
{
trace("ioErrorHandler: " + event);
outputLogMessage(event.errorID + " " + event.text);
}
private function saveSwfContentToLocal(e:Event, sFileName:String):void
{
var imgByteArray:ByteArray=(ByteArray)(myURLLoader.data);
var tempFiles:File=File.applicationStorageDirectory;
tempFiles=tempFiles.resolvePath("image/" + sFileName);
var fs:FileStream=new FileStream();
try
{
fs.open(tempFiles, FileMode.WRITE);
fs.writeBytes(imgByteArray);
fs.close();
}
catch (e:Error)
{
trace(e.message);
}
}
二 采取 saveas 的方式.
package {
import flash.display.Sprite;
import flash.events.*;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.net.FileFilter;
public class FileReference_download extends Sprite {
private var downloadURL:URLRequest;
private var fileName:String = "SomeFile.pdf";
private var file:FileReference;
public function FileReference_download() {
downloadURL = new URLRequest();
downloadURL.url = "http://www.[yourDomain].com/SomeFile.pdf";
file = new FileReference();
configureListeners(file);
file.download(downloadURL, fileName);
}
private function configureListeners(dispatcher:IEventDispatcher):void {
dispatcher.addEventListener(Event.CANCEL, cancelHandler);
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
dispatcher.addEventListener(Event.OPEN, openHandler);
dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
dispatcher.addEventListener(Event.SELECT, selectHandler);
}
private function cancelHandler(event:Event):void {
trace("cancelHandler: " + event);
}
private function completeHandler(event:Event):void {
trace("completeHandler: " + event);
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
}
private function openHandler(event:Event):void {
trace("openHandler: " + event);
}
private function progressHandler(event:ProgressEvent):void {
var file:FileReference = FileReference(event.target);
trace("progressHandler name=" + file.name + " bytesLoaded=" + event.bytesLoaded + " bytesTotal=" + event.bytesTotal);
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
private function selectHandler(event:Event):void {
var file:FileReference = FileReference(event.target);
trace("selectHandler: name=" + file.name + " URL=" + downloadURL.url);
}
}
}
本文介绍两种使用Flash技术实现从远程服务器下载图片并保存到本地的方法:一是直接下载并保存图片,随后通过本地路径显示;二是利用FileReference的saveAs对话框让用户选择保存位置。
3817

被折叠的 条评论
为什么被折叠?



