Flex +java 多文件上传带进度条
2012-12-03 14:42
543 查看
最终效果图:
源码:
Flex文件:
AS文件:
Java文件:
本文可参考:http://www.beijibear.com/index.php?aid=78
源码:
Flex文件:
<common:TitledBorderBox width="100%" height="100%"> <mx:Form width="100%"> <mx:FormItem label="附件列表:" indicatorGap="0" height="111" width="675"> <mx:HBox height="100%" width="587"> <mx:DataGrid width="516" height="100%" id="dataGrid"> <mx:columns> <mx:DataGridColumn headerText="文件名称" dataField="fileName" fontSize="12"/> <mx:DataGridColumn headerText="文件大小" dataField="fileSize" fontSize="12"/> <mx:DataGridColumn headerText="文件类型" dataField="type" fontSize="12"/> <mx:DataGridColumn width="130" headerText="操作" fontSize="12"> <mx:itemRenderer> <mx:Component> <mx:HBox width="300" paddingLeft="2" horizontalGap="2" verticalAlign="middle"> <mx:ProgressBar id="progress" width="100%" minimum="0" maximum="100" source="{data.fileRefrence}" labelPlacement="center" label="%3%%"> </mx:ProgressBar> </mx:HBox> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> </mx:columns> </mx:DataGrid> <mx:VBox> <mx:Button label="浏 览" id="browse" click="select(event)" fontSize="12"/> <mx:Button label="取 消" id="cancel" fontSize="12" click="onCancel()"/> </mx:VBox> </mx:HBox> </mx:FormItem> </mx:Form> <mx:HBox width="100%" horizontalAlign="center" height="100%"> <mx:Button label="提 交" click="submit()"/> </mx:HBox> </common:TitledBorderBox>
AS文件:
private var myFileRef:FileReferenceList=new FileReferenceList(); public var arr2:ArrayCollection=new ArrayCollection(); //存放为被上传的东西,与显示无关 private var urlRequest:URLRequest=new URLRequest("servlet/Upload"); //与后台交互 public var arr:ArrayCollection=new ArrayCollection(); //初始化 private function init():void { this.myplan.showsgtype(); //查询 事故类型 this.myplan.queryplanlevel(); //查询预案级别 this.myplan.queryplandept(); //查询制定部门 myFileRef.addEventListener(Event.SELECT, selectHandler); //监听上传对话框确定按钮 } private function selectHandler(event:Event):void { //上传框确认按钮按下 for (var i:int=0; i < myFileRef.fileList.length; i++) { var f:FileReference=FileReference(myFileRef.fileList[i]); var obj:Object=new Object(); obj.fileRefrence=f; //与进度条绑定 obj.fileName=f.name; obj.fileSize=(f.size / 1024).toFixed(2) + "KB"; //toFixed(num)四舍五入到小数点后几位 obj.type=f.type; arr.addItem(obj); arr2.addItem(obj); } dataGrid.dataProvider=arr; } private function select(event:MouseEvent):void { //浏览按钮按下 myFileRef.browse(); } private function uploadCompleteHandler(event:Event):void { //删除已上传文件在数组中的信息 for each (var item in arr2) { if (item.fileRefrence == event.currentTarget) { arr2.source.indexOf(item); //找到已经上传的文件,返回下标 var index:Number=arr2.source.indexOf(item); arr2.removeItemAt(index); //删除已经上传的文件 } } } private function onCancel():void { arr.removeAll(); arr2.removeAll(); dataGrid.dataProvider=arr; } private function submit():void { for (var i:int=0; i < arr2.length; i++) { var f:FileReference=FileReference(arr2[i]['fileRefrence']); f.upload(urlRequest); f.addEventListener(Event.COMPLETE, uploadCompleteHandler); } }
Java文件:
package cn.com.common; 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.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * 上传文件 * * @author LGQ * @data 2010-11-10 * */ @SuppressWarnings("serial") public class Upload extends HttpServlet { // 限制文件上传大小 private final int maxPostSize = 10 * 1024 * 1024; // 定义文件的上传路径 private String upLoadPath = null; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } @SuppressWarnings( { "unchecked", "unchecked", "deprecation" }) @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); // 创建对象的工厂,可以设定缓冲区大小和存放临时文件目录。 DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); // 设置是否将上传文件已临时文件的形式保存在磁盘的临界值(以字节为单位的int值) // factory.setRepository(new File("e:/temp"));// 设置上传文件的临时目录 // 处理表单数据,将数据封装到 FileItem 对象中。 ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(maxPostSize); upload.setHeaderEncoding("UTF-8"); try { List<FileItem> fileItems = upload.parseRequest(request); Iterator<FileItem> iter = fileItems.iterator(); while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); // 判断是否是普通字段 if (!item.isFormField()) { String name = item.getName(); @SuppressWarnings("unused") String value = item.getString(); @SuppressWarnings("unused") String strDirPath = request.getSession()// 服务器路径 .getServletContext().getRealPath("/"); this.upLoadPath = strDirPath + "uploadfile/"; // 判断文件夹是否存在,不存在则创建 if (!(new File(upLoadPath).exists())) { new File(upLoadPath).mkdir(); } System.out.println(upLoadPath); // 将文件保存到服务器下 item.write(new File(strDirPath + "uploadfile/" + name)); } } } catch (Exception e) { e.printStackTrace(); } } }
本文可参考:http://www.beijibear.com/index.php?aid=78
相关文章推荐
- java ajax多文件上传并展示上传进度信息
- Java动态显示文件上传进度实现代码
- java进行文件上传,带进度条
- 【原创】用JAVA实现大文件上传及显示进度信息
- Flex+Java Servlet文件上传实例
- Flex、java实现文件上传
- java jsch实现sftp文件上传,并且控制上传的速度,同时监控上传进度
- Java动态显示文件上传进度的简单实现
- flex_文件上传处理JAVA类;
- Flex+Java 导出PDF文件(大小不定)时进度条应用
- Java动态显示文件上传进度的简单实现
- Java与Flex学习笔记(8)----Flex带进度条的多文件上传(基于Servlet)
- JavaWeb项目实现上传文件动态显示进度百分比
- Java DWR Extjs Servlet 文件上传 进度条
- 重新学javaweb---文件上传监听--进度条
- 用JAVA实现大文件上传及显示进度信息
- 用JAVA实现大文件上传及显示进度信息
- Flex与java进行socket通信完成以断点续传方式的文件上传
- java struts2 多文件上传 加进度条
- java ssh文件上传精确计算每个上传文件大小并显示进度