`
longgangbai
  • 浏览: 7325906 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flex 文件上传Java做后台实现的组件

阅读更多

                 项目中要求上传文件同时获取上传文件的信息并做日志等要求,我们上传的同时提供商的授权文件和公司的授权文件,所以传入fileType字段表示上传的授权文件类型,在写日志使用。同时在组件显示上传文件的信息.

 

 /**
    * 选择授权文件,并上传
    */
   private function uploadFile(fileType:int):void {
    //定义文件上传组件
    var file:FileReference = new FileReference();
    file.addEventListener(Event.SELECT, selectHandler);
    file.addEventListener(Event.CANCEL, cancelHandler);
    file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadCompleteDataHandler);
    file.addEventListener(IOErrorEvent.IO_ERROR, ioErrerHandler);
    
    var ff:FileFilter = new FileFilter("授权文件", "*.*");
    var fileFieldName:String = "proof";
    var FILENAME:String="";
    var FILETYPE:int=fileType;
    file.browse([ff]);
    
    /**
     * 选中文件处理
     */
    function selectHandler(event:Event):void {
     //保存相对路径
     var variables:URLVariables = new URLVariables();
     var urlRequest:URLRequest = new URLRequest(AppGlobal.serverAppUrl + AppGlobal.FILE_UP_URL);
     variables.path = AUTH_FILE_SAVE_PATH;
     urlRequest.data = variables;
     file.upload(urlRequest, fileFieldName);
    }
    
   
    /**
     * 取消
     */
    function cancelHandler(event:Event):void {
     removeFileEventListener();
    }
    
    /**
     * 完成上传并接受返回数据处理
     */
    function uploadCompleteDataHandler(event:DataEvent):void {
     removeFileEventListener();
     var serverFileName:String = null;
     //服务器返回数据xml,
     var properties:XML = new XML(event.data);
     var xmlList:XMLList = properties.children();
     for each (var entry:XML in xmlList) {
      if (fileFieldName == entry.attribute("key").toString()) {
       serverFileName = entry.descendants().toString();
      }
     }
     if (serverFileName == null) {
      return;
     }
     FILENAME=serverFileName;
     //更改数据库文件的信息
     updateAuthFile();
    }
    
    /**
     * 出错处理
     */
    function ioErrerHandler(event:IOErrorEvent):void {
     removeFileEventListener();
     trace(event.text);
     MessageBox.showMsg("传输文件出错!", "错误");
    }
   
    /**
     * 移除事件监听器
     */
    function removeFileEventListener():void {
     file.removeEventListener(Event.SELECT, selectHandler);
     file.removeEventListener(Event.CANCEL, cancelHandler);
     file.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadCompleteDataHandler);
     file.removeEventListener(IOErrorEvent.IO_ERROR, ioErrerHandler);
     ff = null;
     file = null;
    }
    
       /***
       * 更改授权文件的数据库信息
       *
       */
       function updateAuthFile():void
       {

          //RemoteDataService 自定义的封装远程数据访问对象的类RemoteDataService
         RemoteDataService.execute(updateAuthFileString,[FILENAME,orderNo,FILETYPE],executeResult);
       }
       function executeResult(result:int):void {
              var num:int = result;
              if(num>0)
              {
               var auth:Object=new Object();
               auth.FILE_NAME=FILENAME;
                 if(FILETYPE==OfflineConstant.COMPANY_AUTHORIZATION_FILE)
      {
       createGridRow(auth,COMPANYAUTHFILEDG);
      }else{
         createGridRow(auth,SUPPLYAUTHFILE);
      }
              }else{
                  MessageBox.showMsg("文件上传失败!", "提示");
              }
          }
    
   }

 

后台Java代码如下:

package servlet;

import java.io.File;
import java.io.IOException;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class FileService extends HttpServlet
{

    public static String getRootPath()
    {
        return rootPath;
    }

    public static void setRootPath(String rootPath)
    {
        rootPath = rootPath;
    }

    public FileService()
    {
    }

    public void destroy()
    {
        super.destroy();
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
    {
        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
    {
        String path = request.getParameter("path");
        Properties props = new Properties();
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if(isMultipart)
        {
            org.apache.commons.fileupload.FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload upload = new ServletFileUpload(factory);
            upload.setHeaderEncoding("utf-8");
            upload.setFileSizeMax(0x400000L);
            List items = null;
            try
            {
                items = upload.parseRequest(request);
            }
            catch(FileUploadException e1)
            {
                throw new ServletException(e1.getMessage());
            }
            File pathFile = new File((new StringBuilder(String.valueOf(rootPath))).append(File.separator).append(path).toString());
            if(!pathFile.exists())
                pathFile.mkdirs();
            for(Iterator iter = items.iterator(); iter.hasNext();)
            {
                FileItem item = (FileItem)iter.next();
                if(!item.isFormField())
                {
                    String fieldName = item.getFieldName();
                    String fileName = item.getName();
                    String extension = "";
                    int lastIndexOfDot = fileName.lastIndexOf('.');
                    if(lastIndexOfDot != -1)
                    {
                        int fileNameLength = fileName.length();
                        extension = (new StringBuilder(".")).append(fileName.substring(lastIndexOfDot + 1, fileNameLength)).toString();
                    }
                    String serverFileName = (new StringBuilder(String.valueOf(UUID.randomUUID().toString()))).append(extension).toString();
                    serverFileName = serverFileName.toLowerCase();
                    File file = new File((new StringBuilder(String.valueOf(pathFile.getPath()))).append(File.separator).append(serverFileName).toString());
                    try
                    {
                        item.write(file);
                    }
                    catch(Exception e)
                    {
                        throw new IOException(e.getMessage());
                    }
                    props.put(fieldName, serverFileName);
                }
            }

        }
        props.storeToXML(response.getOutputStream(), null);
    }

    public void init()
        throws ServletException
    {
        rootPath = getInitParameter("rootPath");//在web.xml中添加配置信息
    }

    private static final long serialVersionUID = 0xef3005bb45828b8fL;
    private static String rootPath;
}

 

分享到:
评论
6 楼 longgangbai 2011-10-08  
采用flex中blaze中的http方式访问部署好的web容器
suqingyu 写道
请问  这个flex 是怎么与java的servlet 进行交互的  求解?


通过flexHTTP的相关组建访问,访问的时候,同时访问flex中blaze的http配置服务service,访问部署好的web容器.
5 楼 suqingyu 2011-09-23  
请问  这个flex 是怎么与java的servlet 进行交互的  求解?
4 楼 longgangbai 2011-08-30  
leletaozhi 写道
我想请问,后台Java代码要往哪里写?我是很新很新的新手,所以请教下~~~


这个一种Flex 通过Http方式访问java的demo
3 楼 longgangbai 2011-08-30  
leletaozhi 写道
我写在MyEclipse里了,可是import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
这几行为啥出错呢?cannot be resolved


有两种可能,第一种你的commons-fileupload版本和我的不一致.
         第二种你的项目没有编译.
2 楼 leletaozhi 2011-03-31  
我写在MyEclipse里了,可是import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
这几行为啥出错呢?cannot be resolved
1 楼 leletaozhi 2011-03-24  
我想请问,后台Java代码要往哪里写?我是很新很新的新手,所以请教下~~~

相关推荐

    Flex +BlazeDS+java后台分页的实现

    本方案主要探讨了如何在Flex前端和BlazeDS中间件与Java后台之间实现有效的数据分页。 Flex是一种基于ActionScript和MXML的开放源代码框架,用于构建富互联网应用程序(RIA)。它提供了丰富的用户界面组件库,包括...

    flex+java做的一个文件图片上传功能

    在Flex和Java集成开发环境中,实现文件图片上传功能是一项常见的需求。这个功能主要涉及客户端的用户界面交互和服务器端的数据处理。在这个场景中,我们利用Adobe Flex作为前端UI框架,结合Java后端来处理文件上传...

    Flex拍照并上传到java后台——未调试成功

    标题中的“Flex拍照并上传到java后台——未调试成功”表明这是一个关于使用Adobe Flex技术进行拍照功能实现,并将拍摄的照片上传到Java后端服务器的项目,但目前该项目可能在调试阶段遇到了问题。Flex是一种用于创建...

    flex_java实现多文件上传_超全

    标题"flex_java实现多文件上传_超全"暗示我们将探讨如何使用Flex作为前端界面,与Java后台进行交互,以支持用户同时上传多个文件的功能。这通常涉及到前端的表单设计、文件选择控件、进度显示以及后台的数据处理和...

    Flex 实现文件上传及进度显示

    Flex是一种基于ActionScript 3.0的开源...以上就是使用Flex实现文件上传及进度显示的关键知识点,这些内容涵盖了从用户交互到后台处理的整个流程。在实际开发中,还需要根据项目需求和具体技术栈进行适当的调整和优化。

    flex 与java后台整合 PPT

    在“flex 与java后台整合 PPT”这个主题中,我们将探讨如何将Flex前端与Java后端集成,以实现高效的数据通信和应用交互。Flex与Java的整合主要依赖于AMF(Action Message Format)协议,它允许Flex客户端与Java...

    Flex+Java多文件上传

    本话题将详细探讨“Flex+Java多文件上传”这一技术实现,结合提供的标签“源码”和“工具”,我们将深入理解如何利用Adobe Flex(一种RIA开发框架)与Java后台进行协同工作,实现高效的文件上传功能。 首先,Flex是...

    Flex和Servlet结合上传文件

    这里我们关注的是如何将Adobe Flex与Java的Servlet技术相结合,实现用户友好的文件上传界面。Flex作为一个强大的富客户端开发框架,可以提供美观且交互性强的用户界面,而Servlet则是Java Web应用中的标准组件,用于...

    Flex+Java Servlet文件上传实例

    1. **Flex组件**:在Flex中,你可以使用`FileReference`组件来实现文件选择和上传功能。用户通过这个组件可以选择本地文件,然后触发上传操作。 2. **事件监听**:需要监听`FileReference`对象上的`select`和`...

    flex4与java结合实例

    通过Flash Builder或IntelliJ IDEA等集成开发环境(IDE),开发者可以构建Flex4应用,并与Java后台进行通信。 Java作为服务器端语言,有着广泛的应用场景,如Spring、Hibernate、Struts等框架都为Java Web应用提供...

    Flex图片上传实例

    开发者可以通过阅读这份代码来理解如何在Flex中实现文件选择、事件监听、以及与Java服务器端的通信机制。源代码分析将有助于深入理解整个上传流程,包括错误处理和进度更新等细节。 总的来说,这个Flex图片上传实例...

    flex4.0和java后台通信实例

    本实例是Flex 4.0与Java后台通信的一个典型应用,主要目的是帮助初学者理解和掌握这两者之间的数据交换机制。运行说明通常会涵盖以下内容: 1. **环境配置**:首先,确保你已经安装了Adobe Flex Builder或类似的IDE...

    flex+java+mysql登录

    2. `RemoteObject`连接Java后台:在Flex中,`RemoteObject`组件是与后端服务通信的关键。你需要配置`RemoteObject`的`endpoint`属性指向Java服务的URL,并且定义与Java服务对应的接口方法。例如,你可以创建一个名为...

    flex多文件上传

    7. **服务器端处理**:在Java环境下,通常使用Servlet或者Spring MVC等框架来接收和处理Flex上传的文件。服务器端需要解析Multipart/form-data请求,将接收到的文件保存到指定位置,并返回确认信息。 8. **安全性...

    Flex+java上传开发工具包

    在文件上传场景中,Flex可以设计出直观的文件选择和上传界面,与后台的Java服务无缝对接,通过AMF(Action Message Format)或其他协议进行通信。 使用Flex+Java上传开发工具包,开发者可以构建出以下特性: 1. **...

    Flex与java通讯

    在Flex中,我们通常使用Service组件(如RemoteObject、WebService或HTTPService)来调用Java后台服务。这些服务组件可以配置到特定的URL,处理HTTP请求和响应,将AMF数据转换为Flex可以理解的对象。 5. **Java ...

    flex 文件上传 预览下载 及中文名乱码解决问题

    本篇文章将详细介绍如何在Flex中实现文件上传、预览、下载功能,并解决中文文件名在这些操作中可能出现的乱码问题。 首先,文件上传是通过HTTP的POST请求来实现的。在Flex中,我们可以使用`URLLoader`类来发送数据...

    基于java+flex实现的聊天程序

    《基于Java+Flex实现的聊天程序详解》 在信息技术领域,构建实时的在线聊天系统是一项常见的挑战。本项目“基于Java+Flex实现的聊天程序”提供了一种有效的解决方案,它结合了Java的强大后端处理能力和Flex的富...

Global site tag (gtag.js) - Google Analytics