1.Servlet代码
package com.fpt.servlet;
import java.io.File;
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;
public class FileUploadServlet extends HttpServlet {
?// 定义文件的上传路径
?private String uploadPath = "f:/";
?// 限制文件的上传大小
?private int maxPostSize = 100 * 1024 * 1024;
?public FileUploadServlet() {
??super();
?}
?public void destroy() {
??super.destroy();
?}
?protected void processRequest(HttpServletRequest request,
???HttpServletResponse response) throws ServletException,IOException {
??System.out.println("Access !");
??// uploadPath=request.getSession().getServletContext().getRealPath("");
??System.out.println(uploadPath);
??response.setContentType("text/html;charset=UTF-8");
??PrintWriter out = response.getWriter();
??// 保存文件到服务器中
??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));
??????// SaveFile s = new SaveFile();
??????// s.saveFile(name);
?????} catch (Exception e) {
??????e.printStackTrace();
?????}
????}
???}
??} catch (FileUploadException e) {
???e.printStackTrace();
???System.out.println(e.getMessage() + "结束");
??}
?}
?// <editor-fold defaultstate="collapsed"
?// desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
?protected void doGet(HttpServletRequest request,IOException {
??processRequest(request,response);
?}
?protected void doPost(HttpServletRequest request,response);
?}
?
?public String getServletInfo() {
??return "file upload";
?}
}
2.flex上传组件
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"?? isPopUp="true"
??? layout="vertical" width="100%" minWidth="400" height="100%" minHeight="200"
??? title="上传页面" creationComplete="initCom()">
?
?<mx:Metadata>
??[Event(name="uploadComplete",type="flash.events.Event")]
??[Event(name="uploadProgress",type="flash.events.ProgressEvent")]
??[Event(name="uploadCancel",type="flash.events.Event")]
??[Event(name="uploadIOError",type="flash.events.IOErrorEvent")]
??[Event(name="uploadSecurityError",type="flash.events.SecurityErrorEvent")]
?</mx:Metadata>
?
?<mx:Script>
??<![CDATA[
???
???
???
???import mx.controls.*;
???import mx.managers.*;
???import mx.events.*;
???import flash.events.*;
???import flash.net.*;
???
???private var _strUploadUrl:String;
???private var _refAddFiles:FileReferenceList;???
???private var _refUploadFile:FileReference;
???private var _arrUploadFiles:Array;
???private var _numCurrentUpload:Number = 0;???????????
???
???// Set uploadUrl
???public function set uploadUrl(strUploadUrl:String):void {
????_strUploadUrl = strUploadUrl;
???}
???
???// Initalize
???private function initCom():void {
????_arrUploadFiles = new Array();???????????????
????enableUI();
????uploadCheck();
???}
???
???// Called to add file(s) for upload
???private function addFiles():void {
????_refAddFiles = new FileReferenceList();
????_refAddFiles.addEventListener(Event.SELECT,onSelectFile);
????_refAddFiles.browse();
???}
???
???// Called when a file is selected
???private function onSelectFile(event:Event):void {
????var arrFoundList:Array = new Array();
????// Get list of files from fileList,make list of files already on upload list
????for (var i:Number = 0; i < _arrUploadFiles.length; i++) {
?????for (var j:Number = 0; j < _refAddFiles.fileList.length; j++) {
??????if (_arrUploadFiles[i].name == _refAddFiles.fileList[j].name) {
???????arrFoundList.push(_refAddFiles.fileList[j].name);
???????_refAddFiles.fileList.splice(j,1);
???????j--;
??????}
?????}
????}
????if (_refAddFiles.fileList.length >= 1) {???????