现在的位置: 首页 > 综合 > 正文

Flex多文件上传(转)

2014年01月21日 ⁄ 综合 ⁄ 共 9551字 ⁄ 字号 评论关闭

这是个实现Flex多文件上传的事例。

新建一个UploadFile.mxml文件。如下:


http://www.adobe.com/2006/mxml"
    layout="vertical" horizontalAlign="left" fontSize="12"
    creationComplete="init()"   
    >
   
   

           //LCDSFirst是项目根目录。UploadFile,是在web.xml文件中配置的servlet-name。
            [Bindable]
            private var selectedFiles:ArrayCollection = new ArrayCollection();
            private var singleThreadFiles:Array = [];
            [Bindable]
                private var useSingleThread: Boolean = true;
                private function init():void{
                    fileRefs.addEventListener(Event.SELECT,fileSelectHandler);
                    fileRefs.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
                    fileRefs.addEventListener(Event.COMPLETE,completeHandler);
                    fileRefs.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
                }
                private function selectFile():void{
                    var imagesFilter:FileFilter = new FileFilter("Images(*.jpg,*.png,*.gif,*.jpeg)","*.jpg, *.jpeg, *.gif, *.png");
                    var docFilter:FileFilter = new FileFilter("所有文件(*.*)","*.*");
                    fileRefs.browse([imagesFilter,docFilter]);
                }
                private function fileSelectHandler(event:Event):void{
                    for each(var f:FileReference in fileRefs.fileList){
                        selectedFiles.addItem(f);
                    }
                }
                private function ioErrorHandler(e:IOErrorEvent):void{
                    Alert.show(e.text);
                }
                private function completeHandler(e:Event):void{
                    //var f:FileReference = e.target as FileReference;
                    img.source = e.target.data;
                }
                private function showImage(e:Event):void{
                    var f:FileReference = (e.target as DataGrid).selectedItem as FileReference;
                    f.addEventListener(Event.COMPLETE,completeHandler);
                }    
                private function uploadFile():void{
                    for each(var f:FileReference in selectedFiles){
                        try{
                            f.upload(urlrequest);
                        }catch(e:Error){
                            Alert.show(e.message);
                        }
                    }
                }
                private function singleThreadUploadFile():void{
                    if(singleThreadFiles.length > 0){
                        var f:FileReference = singleThreadFiles.pop() as FileReference;
                        f.addEventListener(Event.COMPLETE,doSingleUploadFileComplete);
                        f.upload(urlrequest);
                    }
                }
                private function doSingleUploadFileComplete(event:Event):void{
                    var f:FileReference = event.target as FileReference;
                    f.removeEventListener(Event.COMPLETE,doSingleUploadFileComplete);
                    singleThreadUploadFile();
                }
                public function removeFile(f:FileReference):void{
                    var index:int = selectedFiles.getItemIndex(f);
                    if(index != -1){
                        selectedFiles.removeItemAt(index);
                    }
                }
        ]]>
   
   
    
          
          
               
           

       

       
           
               
               
                   
                       
                           
                       

                   

               

               
                   
                       
                           
                               
                                                                    maximum="100" minimum="0" labelPlacement="center" mode="manual"
                                    label="%3%%" textAlign="left" creationComplete="initProgressBar(event)"/>
                                                                   
                                                                                    var f:FileReference = data as FileReference;
                                            f.cancel();
                                        ]]>
                                   

                               
                                                                   
                                                                                    var f:FileReference = data as FileReference;
                                            outerDocument.removeFile(f);
                                        ]]>
                                   

                               
                           

                       

                   

               

           
       

   

   
       
                    change="useSingleThread = !checkboxSingleThread.selected"/>
   

   

其次,建一个UploadFile.java.如下:

package com;

import java.io.IOException;
import java.util.List;
import java.io.File;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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 UploadFile extends HttpServlet {
    private static final long serialVersionUID = 5425836142860976977L;
    /** *//**
     * Processes requests for both HTTP GET and POST methods.
     * @param request servlet request
     * @param response servlet response
     */
    // �����ļ����ϴ�·��
    private String uploadPath = "d://files//";
    //�����ļ����ϴ���С
    private int maxPostSize = 100 * 1024 * 1024; //���100M
    public UploadFile(){
        super();
    }
    public void destroy(){
        super.destroy();
    }
    protected void processRequest(HttpServletRequest request,HttpServletResponse response)
        throws ServletException,IOException
    {
        System.out.println("Access !");
        response.setContentType("text/html;charset=UTF-8");
        //�����ļ�����������
        DiskFileItemFactory factory = new DiskFileItemFactory();
        factory.setSizeThreshold(4096);
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setHeaderEncoding("utf-8");
        upload.setFileSizeMax(maxPostSize);
        try{
            List fileItems = upload.parseRequest(request);
            Iterator iter = fileItems.iterator();
            while(iter.hasNext()){
                FileItem item = (FileItem)iter.next();
                if(!item.isFormField()){
                    String name = item.getName();
                    System.out.println(name);
                    try{
                        item.write(new File(uploadPath + name));
                        response.getWriter().write("�ϴ��ɹ���");
                    }catch(Exception e){
                        e.printStackTrace();
                        response.getWriter().write(e.getMessage());
                    }
                }
            }
        }catch(FileUploadException e){
             e.printStackTrace();
             response.getWriter().write(e.getMessage());
             System.out.println(e.getMessage() + "����");
        }
    }
     protected void doGet(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {
         processRequest(request, response);
    }
     /** *//**
         * Handles the HTTP POST method.
         * @param request servlet request
         * @param response servlet response
         */
     protected void doPost(HttpServletRequest request, HttpServletResponse response)
                 throws ServletException, IOException {
         processRequest(request, response);
     }
         /** *//**
          * Returns a short description of the servlet.
          */
     public String getServletInfo() {
         return "Short description";
     }

}

在web.xml文件中配置这个java类文件。如下:


        UploadFile
        File Upload Servlet
        File Servlet Example
        com.UploadFile
   

   
        UploadFile
        /UploadFile
   

抱歉!评论已关闭.