如何从服务器的图片保存到本地

本文介绍两种使用Flash技术实现从远程服务器下载图片并保存到本地的方法:一是直接下载并保存图片,随后通过本地路径显示;二是利用FileReference的saveAs对话框让用户选择保存位置。

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);
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值