Flex +java 多文件上传带进度条
发布时间:2020-12-15 04:37:34 所属栏目:百科 来源:网络整理
导读:最终效果图: 源码: 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
源码: 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容