Flex 中的上传文件

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" 
                xmlns:basic="mxml.basic.*"
                xmlns="*" creationComplete="init();"
                width="100%" height="100%">
    <mx:Script>
        <![CDATA[
            import flash.events.*;
            import flash.net.FileReference;
            import mx.controls.Alert;
            import mx.events.CloseEvent;
            
            import com.adobe.net.URI;
            import com.adobe.net.IURIResolver;
            
            private var file: FileReference;
            
            private function init(): void{
                customCodeTypeService=new RemoteObject("customCodeTypeService");               
                Security.allowDomain("*");
                file = new FileReference();
                file.addEventListener(ProgressEvent.PROGRESS, onProgress);
                file.addEventListener(Event.SELECT, onSelect);
                file.addEventListener(Event.COMPLETE, completeHandle);
            }
            
 
            private function completeHandle(event:Event):void{
                Alert.show("恭喜你,导入成功");
            }
            
            private function upload(): void{
                var officeType:FileFilter = new FileFilter("Office文件(*.xls,*.xlsx)","*.xls; *.xlsx");
                var allTypes:Array = new Array(officeType);
                file.browse(allTypes);
            }
            private function onSelect(e: Event): void{
                Alert.show("导入 " + file.name + " (共 "+Math.round(file.size)+" 字节)?", 
                    "确认导入", Alert.YES|Alert.NO, null, proceedWithUpload);
            }
            
            private function onProgress(e: ProgressEvent): void{
                lbProgress.text = " 已导入 " + e.bytesLoaded + " 字节,共 " + e.bytesTotal + " 字节";
                var proc: uint = e.bytesLoaded / e.bytesTotal * 100;
                bar.setProgress(proc, 100);
                bar.label= "当前进度: " + " " + proc + "%";
            }
            
            private function proceedWithUpload(e: CloseEvent): void{
                if (e.detail == Alert.YES){
                    var uri:URI = new URI(Application.application.url);  
                    //Flex 中取得当前服务IP地址  as3corelib里面的类,所以必须要as3corelib这个包,然后import com.adobe.net.URI;
 // FileUploaded是Servlet的名字
                    var url:String = "http://"+uri.authority+":"+(uri.port=uri.port) + "/CODE/FileUploaded"; 
                    var request: URLRequest = new URLRequest(url);
                    try {
                        file.upload(request);
                    } catch (error:Error) {
                        trace("导入失败");
                    }
                }
                systemManager.removeChild(this);
            }
        ]]>
    </mx:Script>
    <mx:VBox width="100%" horizontalAlign="center">
        <mx:Label id="lbProgress" text="导入"/>
        <mx:ProgressBar id="bar" labelPlacement="bottom" themeColor="#F20D7A" minimum="0" visible="true" maximum="100" label="当前进度: 0%"
                        direction="right" mode="manual" width="200"/>
        <mx:Button label="导入Excel文件" click="upload();"/>
    </mx:VBox>
</mx:Application>


 创建Servlet
 // FileUploaded是Servlet的名字
package cn.csg.drm.code.servlet;




import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;




import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
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;
import org.springframework.beans.factory.annotation.Autowired;




import com.gdtopway.framework.common.exception.FrameworkException;




import cn.csg.drm.code.domain.CodeString;
import cn.csg.drm.code.service.ICustomCodeTypeService;




/**
 * 文件上传Servlet
 * @author hujianping
 */
public class FileUploaded extends HttpServlet {
    private ICustomCodeTypeService customCodeTypeService;
    public ICustomCodeTypeService getCustomCodeTypeService() {
        return customCodeTypeService;
    }
    @Autowired
    public void setCustomCodeTypeService(ICustomCodeTypeService customCodeTypeService) {
        this.customCodeTypeService = customCodeTypeService;
    }




    private static final long serialVersionUID = 1707896635884868156L;
    // 定义文件的上传路径
    public static String uploadPath = "";
    public static String name = "";
    // 限制文件的上传大小
    private int maxPostSize = 100 * 1024 * 1024;
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException{
        //获得根目录
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String uploadPath = request.getSession().getServletContext().getRealPath("\\");
        System.out.println("uploadPath"+uploadPath);
            
        //保存文件到服务器中
        DiskFileItemFactory factory = new DiskFileItemFactory();
        factory.setSizeThreshold(4096);
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setSizeMax(maxPostSize);
        try {
            List fileItems = upload.parseRequest(request);
            Iterator iter = fileItems.iterator();
            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();
                if (!item.isFormField()) {
                     name = item.getName();
                    try {
                        item.write(new File(uploadPath+ name));
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        }
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            processRequest(request, response);
    }
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
    
    public void destroy() {
        super.destroy();
    }
}


配置web.xml
    <servlet>
    <description></description>
    <display-name>FileUploaded</display-name>
    <servlet-name>FileUploaded</servlet-name>
    <servlet-class>cn.csg.drm.code.servlet.FileUploaded</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>FileUploaded</servlet-name>
    <url-pattern>/FileUploaded</url-pattern>
  </servlet-mapping>
  <servlet>
FileUploadServlet.class package test; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; 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 FileUploadServlet extends HttpServlet { // 定义文件的上传路径 private String uploadPath = "G://upload/"; // 限制文件的上传大小 private int maxPostSize = 100 * 1024 * 1024; public FileUploadServlet() { super(); } public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 得到用户需要保存的服装的id //String dressId = request.getParameter("dressID"); //System.out.println(dressId); // 保存文件到服务器 response.setContentType("text/html; charset=UTF-8"); DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(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)); } catch (Exception e) { e.printStackTrace(); } } } } catch (FileUploadException e) { e.printStackTrace(); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public void init() throws ServletException { // Put your code here } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值