`
maloveqiao
  • 浏览: 101996 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Flex+java+spring 上传和下载文件AIR

    博客分类:
  • flex
 
阅读更多
什么都别说附上代码

UploadFile.java



package com.service;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.springframework.web.context.support.HttpRequestHandlerServlet;

import sun.misc.Request;



public class UploadFile {
    public void uploadFile(byte[] content, String fileName) throws Exception {
   String filePath=getClass().getClassLoader().getResource("/").getFile();
   filePath=filePath.substring(0, (filePath.lastIndexOf("WEB-INF/classes/")));
      File file = new File(filePath+"file\\");
      if(!file.exists()) file.mkdirs();  //如果目录不存在就新建
      File filePro=new File(filePath+"file\\"+ fileName);
            FileOutputStream stream = new FileOutputStream(filePro);
            if (content != null){
                stream.write(content);
            stream.close();
         }
    
     }
    
}



flex应用组件

分开----------------------------------------------------------------------------------------------------------------------------------------------------------------

FileUploader.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
title="上传文件"
width="609" height="400"
dropShadowVisible="true"
creationComplete="init();"
close="titlewindow1_closeHandler(event)"
backgroundColor="#C6C6C6"
xmlns:timerLoader="com.thams.efile.timerLoader.*">
<s:layout>
  <s:VerticalLayout horizontalAlign="center" paddingTop="10"/>
</s:layout>
<fx:Script>
  <![CDATA[
   import com.thams.efile.vo.FileRefrenceVo;
   import com.thams.utils.ArrayCollectionUtils;
   import com.thams.utils.MenuImageClass;
  
   import flash.utils.getTimer;
  
   import mx.collections.ArrayCollection;
   import mx.controls.Alert;
   import mx.controls.ProgressBar;
   import mx.events.CloseEvent;
   import mx.managers.PopUpManager;
  
   private var fileList:FileReferenceList = new FileReferenceList();  //多选文件的list
   [Bindable]
   private var selectedFiles: ArrayCollection = new ArrayCollection();    //多选的文件分离成文件数组
  
   private var fileRef:FileReference;
  
   public var ip:String;
   public var port:String;
   public var user:String;
   public var pass:String;
  
   /**
    * 初始化
    */
   public function init():void{
    fileList.addEventListener(Event.SELECT,fileSelectHandler);
   }
   /**
    *监听文件选择的处理函数
    */
   public var URL:String;
   private function fileSelectHandler(event: Event): void
   {
    var filesNames:String = "";
    if(fileList.fileList.length>10){
     Alert.show("一次最多只能上传10个文件");
    }else{
     for(var i:int=0;i<fileList.fileList.length;i++){
      var f:FileReference = FileReference(fileList.fileList[i]);  
      if(f.size/(1024*1024)>100){
       //Alert.show(f.name+" 文件不能超过100M!已经移除!");
       filesNames += f.name+" \n";
       continue;
      }
      var file:FileRefrenceVo= new FileRefrenceVo();
      file.fileName = f.name;
      file.fileSize = f.size/1024;
      file.fileType = f.type;
      file.fileRefrence = f;
      var b:Boolean = false;
      for each(var o:FileRefrenceVo in selectedFiles){
       if(o.fileName == file.fileName){
        b = true;
       }
      }
      if(!b){
       selectedFiles.addItem(file);
       browseFile.enabled = false;
       upFile.enabled = true;
       //       saveFile.enabled = false;
      }
     }
     if(filesNames){
      Alert.show(filesNames,"以下文件单个超过100M,已经移除!");
     }
     //     if( fileListSize/(1024*1024)>100 ){
     //      selectedFiles.removeAll();
     //      fileListSize = 0;
     //      Alert.show("文件总大小应小于100M");
     //     }
    }
   }
   /**
    * 点击"浏览"按钮-->选择文件
    */
   private function selectFile():void
   {
    //浏览文件,因为是FileReferenceList所以可以多选. 并用FileFilter过滤文件类型.
    fileList.browse([new FileFilter("所有文件 (*.*)","*.*")]);
   }
  
   /**
    * 上传一个文件,监听文件上传完成事件,递归调用.
    */
   private function doSingleUploadFile():void{

    upFile.enabled = false;
    if(selectedFiles.length>10){
     var b:Boolean = true;
     while(b){
      if(fileList&&fileList.fileList.length>0){
       var fi:FileReference = fileList.fileList.shift();
       for each(var selfi:FileRefrenceVo in selectedFiles){
        if(fi.name == selfi.fileName){
         ArrayCollectionUtils.removeObjFromArrayCollection(selectedFiles,selfi);
        }
       }
      }else{
       b = false;
      }
     }
     Alert.show("一次最多只能上传10个文件","提示");
     browseFile.enabled = true;
    }else{
     if (fileList.fileList&&fileList.fileList.length > 0){
      var f: FileReference = fileList.fileList.shift() as FileReference;
      f.addEventListener(Event.COMPLETE, doSingleUploadFileComplete);
      f.load();
     }else{
      //      saveFile.enabled = true;
      browseFile.enabled = true;
     }
    }
   }
   //   else if( fileListSize/(1024*1024)>100 ){
   //    selectedFiles.removeAll();
   //    fileListSize = 0;
   //    Alert.show("文件总大小应小于100M");
   //   }

   /**
    * 一个文件上传完成事件的处理函数,递归执行上传下一个文件.
    */
   private function doSingleUploadFileComplete(event: Event):void{
    var file: FileReference = event.target as FileReference;
    var filename:String="";
    file.removeEventListener(Event.COMPLETE, doSingleUploadFileComplete);
    var date:Date = new Date();
    filename=date.getFullYear()+date.getMonth()+date.getDate()+date.getMinutes()+date.getSeconds()+((Math.random()*10).toString()).substring(0,1)+((Math.random()*10).toString()).substring(0,1)+((Math.random()*10).toString()).substring(0,1)+file.type;
    upload.uploadFile(file.data,filename);//开始上传
    doSingleUploadFile();
   }
   public function removeFile(f: FileReference): void
   {
    var index: int = selectedFiles.getItemIndex(f);
    if (index != -1)
     selectedFiles.removeItemAt(index);
   }

   protected function PopRemoveUpload(event:CloseEvent):void
   {
   }
      protected function titlewindow1_closeHandler(event:CloseEvent):void
   {
    PopUpManager.removePopUp(this);
   }
  
  ]]>
</fx:Script>
<fx:Declarations>
  <s:RemoteObject id="upload" destination="uploadFile" endpoint="http://192.168.1.103:8080/Lx/messagebroker/amf"/>
</fx:Declarations>
<mx:DataGrid id="dg" width="587" height="291"
     dataProvider="{selectedFiles}">
  <mx:columns>
   <mx:DataGridColumn headerText="文件名" dataField="fileName" width="150" sortable="false"/>
   <mx:DataGridColumn headerText="大小(kb)" dataField="fileSize" width="100" sortable="false"/>
   <mx:DataGridColumn headerText="类型" dataField="fileType" width="70" sortable="false"/>
   <mx:DataGridColumn headerText="上传状态" dataField=""    width="230" sortable="false">
    <mx:itemRenderer>
     <fx:Component>
      <mx:HBox width="130" paddingLeft="2" horizontalGap="2">
       <fx:Script>
        <![CDATA[
         override public function set data(value:Object):void{
          super.data = value;
          data.fileRefrence.addEventListener(ProgressEvent.PROGRESS,progressHandler);
          data.fileRefrence.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,fini);
         }
        
         private function progressHandler(event:ProgressEvent):void{
         
          var procent:uint=event.bytesLoaded/event.bytesTotal*100;
         
         }  
        
         public function fini(event: DataEvent):void{
          progress.visible=true;
          progress.label="完成";
          data.fileRefrence.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA,fini);
         }
        ]]>
       </fx:Script>
       <mx:ProgressBar id="progress" width="80%"  
           minimum="0" maximum="100" source="{data.fileRefrence}"
           labelPlacement="center" enabled="true" >
       </mx:ProgressBar>
      </mx:HBox>
     </fx:Component>
    </mx:itemRenderer>
   </mx:DataGridColumn>
  </mx:columns>
</mx:DataGrid>
<s:controlBarContent>
  <s:HGroup horizontalAlign="right" clipAndEnableScrolling="true" paddingBottom="0" paddingTop="0" paddingLeft="10" paddingRight="10" width="100%">
   <s:Button id="browseFile"  label="选择本地文件" toolTip="选择本地文件"   click="selectFile()"/>
   <s:Button id="upFile" label="上传" toolTip="上传"   click="doSingleUploadFile();" enabled="false"/>
   <s:Button id="out" label="退出" toolTip="退出"  width="59"  />
  </s:HGroup>
</s:controlBarContent>
</s:TitleWindow>

分开----------------------------------------------------------------------------------------------------------------------------------------------------------------

FileRefrenceVo.as

package com.thams.efile.vo
{

import flash.net.FileReference;

[Bindable]
public class FileRefrenceVo
{
  public var fileName:String;
  public var fileSize:int;
  public var fileType:String;
  public var fileRefrence:FileReference;
}
}

分开----------------------------------------------------------------------------------------------------------------------------------------------------------------

MenuImageClass.as


package com.thams.utils
{
public class MenuImageClass
{
  [bindable]
  public static  var tuichu:Class;
  [bindable]
  public static var shangyi:Class;
  [bindable]
  public static  var baocun:Class;
  [bindable]
  public static var file:Class;
  public function MenuImageClass()
  {
 
 
 
  }
 
}
}

分开----------------------------------------------------------------------------------------------------------------------------------------------------------------

ArrayCollectionUtils.as

package com.thams.utils
{
import mx.collections.ArrayCollection;

public class ArrayCollectionUtils
{
  public function ArrayCollectionUtils()
  {
  }
 
  public static function removeObjFromArrayCollection(coll:ArrayCollection,obj:Object):ArrayCollection{
   var len:uint = coll.length;
  
   for(var i:Number = len-1; i > -1; i--)
   {
    if(coll.getItemAt(i) == obj)
    {
     coll.removeItemAt(i);
    }
   }
  
   return coll;
  }
}
}

分开----------------------------------------------------------------------------------------------------------------------------------------------------------------

downloadFile.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
        xmlns:s="library://ns.adobe.com/flex/spark"
        xmlns:mx="library://ns.adobe.com/flex/mx"
        creationComplete="init();"
        xmlns:fileDow="com.thams.*">
<fx:Declarations>
  <!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>

-------------------------------------------------------------------------------------文件下载--
<fx:Script>
  <![CDATA[
   import com.thams.downloadFile;
   import com.thams.efile.uploader.FileUploader;
  
   import mx.managers.PopUpManager;
  
  
   public function init():void{
    var win:FileUploader = new FileUploader();
    PopUpManager.addPopUp(win, this, true);
    PopUpManager.centerPopUp(win);
   }
  
  ]]>
</fx:Script>

<fx:Script>
  <![CDATA[
   import flash.display.Sprite;
   import flash.events.*;
   import flash.net.FileReference;
   import flash.net.URLRequest;
   import flash.net.FileFilter;
    private var downloadURL:URLRequest;
    private var file:FileReference;
   
    public function FileReference_download(downloadurl:String,fileNames:Stirng):void{
     downloadURL = new URLRequest();
     downloadURL.url = downloadurl;
     file = new FileReference();
     configureListeners(file);
     file.download(downloadURL, fileNames);
    }
   
    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);
    }
  
  

  
  ]]>
</fx:Script>

<s:Button x="300" y="50" label="远程文件下载"
     click="FileReference_download('http://192.168.1.103:8080/项目名/保存的文件夹/要下载的文件',你的要下载的文件名称);"/>

</s:WindowedApplication>

分享到:
评论

相关推荐

    flex+java+spring+hibernate+blazeds整合

    1. 安装与配置:首先确保安装了Flex SDK、Java环境、Spring框架和Hibernate库。然后在项目中引入BlazeDS的库文件,如lib目录下的 BlazeDS Liberty Project 和 Flex Messaging Core JARs。 2. 配置Spring:创建...

    报表设计器(flex+java+spring)

    这可能包含Flex的MXML和ActionScript文件,Java的源代码,Spring的配置文件,以及任何用于读写Excel的库文件。 综上所述,这个“报表设计器(flex+java+spring)”是一个综合性的工具,集成了前端用户体验、后端数据...

    PureMVC+Flex+BlazeDS+Spring+Hibernate.doc

    标题中的“PureMVC+Flex+BlazeDS+Spring+Hibernate.doc”指的是一项整合了多种技术的Web应用开发方案,这些技术包括PureMVC、Flex、BlazeDS、Spring和Hibernate。这篇文档可能是指导读者如何将这些技术结合在一起...

    Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立)

    远程调用服务允许 Flex 客户端直接调用服务器端的 POJOs(Plain Old Java Objects)、Spring 服务或 EJB 方法,极大地简化了分布式应用的开发。消息传递服务则支持发布/订阅模式,使得服务器端可以广播消息到多个...

    Flex+LCDS+JAVA入门

    而"flex.war"和"blazeds.war"这两个文件则是预编译好的Flex和LCDS服务器端组件,通常可以直接部署到Java应用服务器上,如Tomcat或WebLogic,以快速搭建起Flex-LCDS-Java开发环境。 掌握Flex、LCDS和Java的整合,...

    flex + java上传

    Flex和Java上传是一种常见的Web应用程序开发技术,用于在客户端(通常是浏览器)和服务器之间传输大文件。Flex是一种基于Adobe Flash Player的开源框架,用于构建富互联网应用(RIA),而Java则提供后端处理能力。本...

    FLEX4 FLEX+JAVA+(数据库)

    ### FLEX4 FLEX+JAVA+(数据库) #### RIA技术概述 富互联网应用程序(Rich Internet Application,简称RIA)作为一种新兴的技术形式,弥补了传统C/S(Client/Server)架构和B/S(Browser/Server)架构的不足。RIA...

    Flex+spring+mybatis架构搭建

    Spring框架是Java企业级应用开发的核心工具,它强调的是简化开发、依赖注入和面向切面编程。Spring提供了全面的事务管理、数据访问集成、AOP(面向切面编程)支持,以及众多的可插入的架构和模板。在Flex+Spring架构...

    Flex+Java登录实例完整框架 基于Flex框架

    它包含了Flex编译器,可以将MXML和ActionScript代码编译为SWF文件,这是运行在Adobe Flash Player或Adobe AIR上的二进制格式。 3. **Flex Builder**:是一个集成开发环境(IDE),可以帮助开发者更高效地编写Flex...

    flex+java列子

    Flex和Java的结合是开发富互联网应用程序(RIA)的一个常见选择,它允许前端用户界面的动态性和后端数据处理的强大性。在这个“flex+java列子”中,我们可以看到一个基本的实现,虽然具体的源代码没有包含在压缩包内...

    lib2 flex+struts2+spring+ibatis 完整的jar 需要下载我提供的资源lib1

    总结起来,"lib2 flex+struts2+spring+ibatis" 的组合是一个强大的Java Web开发解决方案,它集成了前端交互、后端控制、服务管理和数据访问的各个方面。通过灵活的配置和组件间的紧密协作,开发者可以快速构建出高效...

    FLEX+Java+BlaseDS 整合 OA系统

    在信息技术日新月异的今天,企业级应用系统的开发愈发复杂,而FLEX、Java、Hibernate、Spring和BlazeDS的整合则为企业级应用提供了高效、灵活的解决方案。本文将深入探讨如何利用这些技术构建一个完整的在线办公自动...

    Flex+ActionScript+JAVA等学习教程集合

    此外,BlazeDS还可以结合Spring框架,方便地集成JavaBeans和Flex组件。 4. **Java集成**:在Java端,你需要了解如何设置和配置BlazeDS,创建服务端的代理类以供Flex调用,以及如何处理由Flex发送过来的请求。同时,...

    flex+java 类

    Flex和Java类的结合是构建富互联网应用程序(RIA)的一种常见方法。Flex是Adobe开发的开源框架,主要用于创建交互式的、基于Flash的用户界面,而Java则是一种广泛使用的后端编程语言,提供强大的数据处理和业务逻辑...

    FLEX+Java开发(1).doc

    综上所述,FLEX+Java开发结合了Flex的富用户体验和Java的强大后端能力,通过BlazeDS和Spring的整合,为开发高效、可扩展的企业级应用提供了强大的解决方案。这对于想要深入理解RIA开发,尤其是希望将Java技术应用于...

    PureMVC+Flex+BlazeDS+Spring+Hibernate

    MyEclipse和Flex Builder作为开发工具,BlazeDS的war文件需要部署到Tomcat服务器,以提供Flex与Java服务之间的通信桥梁。数据库方面,SQL Server负责存储数据,JDBC驱动和proxool连接池用于连接数据库。 在项目创建...

    Flex+BlazeDS+Spring+Hibernate

    - 在服务器端,配置 Spring 项目,创建 Spring 配置文件以管理 Bean,包括 Spring 上下文和Hibernate 的 SessionFactory。 - 集成 Hibernate,配置 Hibernate 的持久化层,如 hibernate.cfg.xml 文件,定义实体类和...

    Flex4.X+BlazeDS+Spring3L实战开发在线书店四

    【标题】"Flex4.X+BlazeDS+Spring3实战开发在线书店四"涉及的核心技术栈是Adobe Flex 4.6、BlazeDS、Spring 3框架以及Java相关的JPA和Hibernate,配合MySQL数据库实现一个在线书店的完整系统。下面将详细阐述这些...

    flex+java+bldc的学习过程

    Flex SDK提供了编译器和Flex Builder等工具,帮助开发者构建可跨浏览器和操作系统运行的Flash Player或Adobe AIR应用。 2. Java:Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性著称。...

    Flex + LCDS + Java 入门教程

    Flex、LCDS(LiveCycle Data Services)和Java是构建富互联网应用程序(Rich Internet Applications, RIA)时常用的技术栈。本教程将引导你逐步了解如何使用这些技术进行开发。 Flex是一种基于ActionScript和MXML的...

Global site tag (gtag.js) - Google Analytics