Flex中利用FileReference类的browse()和upload()函数选择并上传单个文件到Web服务器

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.         layout="vertical"
  4.         verticalAlign="middle"
  5.         backgroundColor="white"
  6.         creationComplete="init();">
  7.    
  8.     <mx:Script>
  9.         <![CDATA[
  10.             private var fileRef:FileReference;
  11.   
  12.             private const FILE_UPLOAD_URL:String = "http://www.YOUR-WEBSITE-HERE.com/fileref/uploader.cfm";
  13.   
  14.             private function init():void {
  15.                 fileRef = new FileReference();
  16.                 fileRef.addEventListener(Event.SELECT, fileRef_select);
  17.                 fileRef.addEventListener(ProgressEvent.PROGRESS, fileRef_progress);
  18.                 fileRef.addEventListener(Event.COMPLETE, fileRef_complete);
  19.             }
  20.   
  21.             private function browseAndUpload():void {
  22.                 fileRef.browse();
  23.                 message.text = "";
  24.             }
  25.   
  26.             private function fileRef_select(evt:Event):void {
  27.                 try {
  28.                     message.text = "size (bytes): " + numberFormatter.format(fileRef.size);
  29.                     fileRef.upload(new URLRequest(FILE_UPLOAD_URL));
  30.                 } catch (err:Error) {
  31.                     message.text = "ERROR: zero-byte file";
  32.                 }
  33.             }
  34.   
  35.             private function fileRef_progress(evt:ProgressEvent):void {
  36.                 progressBar.visible = true;
  37.             }
  38.   
  39.             private function fileRef_complete(evt:Event):void {
  40.                 message.text += " (complete)";
  41.                 progressBar.visible = false;
  42.             }
  43.         ]]>
  44.     </mx:Script>
  45.    
  46.     <mx:NumberFormatter id="numberFormatter" />
  47.    
  48.     <mx:Button label="Upload file"
  49.             click="browseAndUpload();" />
  50.     <mx:Label id="message" />
  51.     <mx:ProgressBar id="progressBar"
  52.             indeterminate="true"
  53.             visible="false" />
  54.    
  55. </mx:Application>
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、付费专栏及课程。

余额充值