Flex+Java Servlet文件上传实例

资源都是来自网上。本实例将展示使用Flex和java servlet上传文件。

 事前准备就是到 http://commons.apache.org 下载common-fileupload-1.1.1.jar以及common-io-1.2.jar两个包。
前台Flex代码:
Xml代码 复制代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns="*" creationComplete="init();">  
  3. <mx:Script>  
  4. <![CDATA[  
  5. import flash.net.FileReference;  
  6. import mx.controls.Alert;  
  7. import mx.events.CloseEvent;  
  8. import flash.events.*;  
  9. private var file: FileReference;  
  10. private function init(): void{  
  11. Security.allowDomain("*");  
  12. file = new FileReference();  
  13. file.addEventListener(ProgressEvent.PROGRESS, onProgress);  
  14. file.addEventListener(Event.SELECT, onSelect);  
  15. file.addEventListener(Event.COMPLETE, completeHandle);  
  16. }  
  17. private function completeHandle(event:Event):void{  
  18.     Alert.show("恭喜你,上传成功");  
  19. }  
  20. private function upload(): void{  
  21. var imageTypes:FileFilter = new FileFilter("Images (*.jpg, *.jpeg, *.png)", "*.jpg;*.jpeg;*.png");  
  22. var allTypes:Array = new Array(imageTypes);  
  23. file.browse(allTypes);  
  24. file.browse();  
  25. }  
  26. private function onSelect(e: Event): void{  
  27. Alert.show("上传 " + file.name + " (共 "+Math.round(file.size)+" 字节)?",  
  28. "确认上传",  
  29. Alert.YES|Alert.NO,  
  30. null,  
  31. proceedWithUpload);  
  32. }  
  33. private function onProgress(e: ProgressEvent): void{  
  34. lbProgress.text = " 已上传 " + e.bytesLoaded  
  35. + " 字节,共 " + e.bytesTotal + " 字节";  
  36. var proc: uint = e.bytesLoaded / e.bytesTotal * 100;  
  37. bar.setProgress(proc, 100);  
  38. bar.label= "当前进度: " + " " + proc + "%";  
  39. }  
  40. private function proceedWithUpload(e: CloseEvent): void{  
  41. if (e.detail == Alert.YES){  
  42. var request: URLRequest = new URLRequest("http://localhost:8080/FileUploaded/FileUploaded");  
  43. try {  
  44. file.upload(request);  
  45. } catch (error:Error) {  
  46. trace("上传失败");  
  47. }  
  48. }  
  49. }  
  50. ]]>  
  51. </mx:Script>  
  52.   
  53. <mx:Canvas width="100%" height="100%" x="10" y="170" fontSize="15">  
  54. <mx:VBox width="100%" horizontalAlign="center">  
  55. <mx:Label id="lbProgress" text="上传"/>  
  56. <mx:ProgressBar id="bar" labelPlacement="bottom" themeColor="#F20D7A"  
  57. minimum="0" visible="true" maximum="100" label="当前进度: 0%"  
  58. direction="right" mode="manual" width="200"/>  
  59.   
  60. <mx:Button label="上传文件" click="upload();"/>  
  61. </mx:VBox>  
  62. </mx:Canvas>  
  63. </mx:Application>  
 

http://localhost:8080/FileUploaded/FileUploaded 就是你自己写的servlet的路径了。

接下来写的是Java Servlet:

Xml代码 复制代码
  1. package upload;   
  2. import java.io.File;   
  3. import java.io.IOException;   
  4. import java.io.PrintWriter;   
  5. import java.util.Iterator;   
  6. import java.util.List;   
  7.   
  8. import javax.servlet.ServletException;   
  9. import javax.servlet.http.HttpServlet;   
  10. import javax.servlet.http.HttpServletRequest;   
  11. import javax.servlet.http.HttpServletResponse;   
  12.   
  13. import org.apache.commons.fileupload.FileItem;   
  14. import org.apache.commons.fileupload.FileUploadException;   
  15. import org.apache.commons.fileupload.disk.DiskFileItemFactory;   
  16. import org.apache.commons.fileupload.servlet.ServletFileUpload;   
  17.   
  18. /**   
  19.  *   
  20.  * @author crystal   
  21.  */   
  22. public class FileUploaded extends HttpServlet {   
  23.   
  24.     /**   
  25.      * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.   
  26.      * @param request servlet request   
  27.      * @param response servlet response   
  28.      */   
  29.     // 定义文件的上传路径   
  30.   
  31.     private String uploadPath = "d://a//";   
  32.   
  33. // 限制文件的上传大小   
  34.   
  35.     private int maxPostSize = 100 * 1024 * 1024;   
  36.   
  37.     public FileUploaded() {   
  38.         super();   
  39.     }   
  40.   
  41.     public void destroy() {   
  42.         super.destroy();   
  43.     }   
  44.   
  45.     protected void processRequest(HttpServletRequest request, HttpServletResponse response)   
  46.             throws ServletException, IOException {   
  47.         System.out.println("Access !");   
  48.         response.setContentType("text/html;charset=UTF-8");   
  49.         PrintWriter out = response.getWriter();   
  50.   
  51. //保存文件到服务器中   
  52.   
  53.         DiskFileItemFactory factory = new DiskFileItemFactory();   
  54.         factory.setSizeThreshold(4096);   
  55.         ServletFileUpload upload = new ServletFileUpload(factory);   
  56.         upload.setSizeMax(maxPostSize);   
  57.         try {   
  58.             List fileItems = upload.parseRequest(request);   
  59.             Iterator iter = fileItems.iterator();   
  60.             while (iter.hasNext()) {   
  61.                 FileItem item = (FileItem) iter.next();   
  62.                 if (!item.isFormField()) {   
  63.                     String name = item.getName();   
  64.                     System.out.println(name);   
  65.                     try {   
  66.                         item.write(new File(uploadPath + name));   
  67.                        // SaveFile s = new SaveFile();   
  68.   
  69.                        // s.saveFile(name);   
  70.   
  71.                     } catch (Exception e) {   
  72.                         e.printStackTrace();   
  73.                     }   
  74.                 }   
  75.             }   
  76.         } catch (FileUploadException e) {   
  77.             e.printStackTrace();   
  78.             System.out.println(e.getMessage() + "结束");   
  79.         }   
  80.     }   
  81.   
  82.     // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">  
  83.   
  84.     /**   
  85.      * Handles the HTTP <code>GET</code> method.   
  86.      * @param request servlet request   
  87.      * @param response servlet response   
  88.      */   
  89.     protected void doGet(HttpServletRequest request, HttpServletResponse response)   
  90.             throws ServletException, IOException {   
  91.         processRequest(request, response);   
  92.     }   
  93.   
  94.     /**   
  95.      * Handles the HTTP <code>POST</code> method.   
  96.      * @param request servlet request   
  97.      * @param response servlet response   
  98.      */   
  99.     protected void doPost(HttpServletRequest request, HttpServletResponse response)   
  100.             throws ServletException, IOException {   
  101.         processRequest(request, response);   
  102.     }   
  103.   
  104.     /**   
  105.      * Returns a short description of the servlet.   
  106.      */   
  107.     public String getServletInfo() {   
  108.         return "Short description";   
  109.     }   
  110.     // </editor-fold>  
  111.   
  112. }  
 如果使得你的Servlet被访问,你还需要在WEB-INF/web.xml 添加如下的xml语句:[在<web-app>中]
Xml代码 复制代码
  1. <!-- For file uploaded -->  
  2.    <servlet>  
  3.         <servlet-name>FileUploaded</servlet-name>  
  4.         <servlet-class>upload.FileUploaded</servlet-class>  
  5.     </servlet>  
  6.   
  7.     <servlet-mapping>  
  8.         <servlet-name>FileUploaded</servlet-name>  
  9.         <url-pattern>/FileUploaded</url-pattern>  
  10.     </servlet-mapping>  
 效果图:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值