`
longgangbai
  • 浏览: 7272835 次
  • 性别: 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开发的项目分页组件的实现,基本设计是分页ui组件负责前台分页的显示,后台java实现sql分页查询。 附带源码。

    flex与java交互的中间介质Blazeds

    使用blazeds可以与java语言交互,实现绚丽的前端flex结合强大的java后台!必备组件哦

    JsSocket,JS+FLEX+JAVA模拟的Js Soclet

    JsSocket 是使用js + flex + java开发的一套基于web的socket通信组件 主要解决大家在开发web项目时需要用到前台与后台时时通信时的问题,除了HTML5的WebSocket之外,之前大家使用的方法一般为:1、页面间断刷新;2、...

    将Flex DataGrid数据导出到Excel中

    将flex中datagrid组件中数据导出到excel表格中。思路很简单,利用as将datagrid中的数据解析出来,传到后台java服务端处理,即可保存为excel文件。

    JSF+Spring+JPA(Hibernate实现)的环境搭建

    我个人还是比较推崇apache的Struts2的,当然了,apache的JSF实现和JSF组件也是相当地杠杠的!!!!JSF更贴近事件比较多的web前端处理机制。想想我们一般要接收和处理页面的各种事件是用什么:js函数+ajax处理是吧...

    flex2.0创建可编辑及分页.txt

    使用Flex,Java,Json更新Mysql数据库 已经介绍了如何使用Json格式的数据从后台用remoteObject的方法读取后现在Flex的DataGrid中。但是如果数据的量很大,就要使用scroll的方式来浏览了,这样造就了很多不变。参考了...

    asp.net知识库

    使用.ashx文件处理IHttpHandler实现发送文本及二进制数据的方法 制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标...

    123个微信小程序源码.zip

    小程序完整demo:飞翔的小鸟:canvas实现,java后端(适用1221) 小程序官方Demo 小程序版2048 小程序页面生成器 康爱多微商城:学习界面设计 微票 我厨 tab 界面设计 手势解锁 掘金首页信息流 摇一摇换文章 教务系统 ...

    实时消息推送系统.ppt

    实时消息推送系统的架构主要包括 NCM 导航服务器、DB 数据库、WS 广播服务器、Admin 后台、API 服务器等组件。 设计指标 实时消息推送系统的设计指标包括: * 电量小于 5% * 流量小于 3MB/月 * 性能:30 秒内发送...

Global site tag (gtag.js) - Google Analytics