- 浏览: 73039 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
liuxinli3820009:
java读写word文档 -
lliiqiang:
有的东西提出来也不会有结果,那么隐含就不会有人提它,有措施未必 ...
java读写word文档 -
=死神=:
找了好久才找到这个方法
感谢楼主
flex表格内容文字可复制 -
Franciswmf:
...
flex横向带图下拉列表和联动下拉列表
我这里的需求是上传前可以删除不需要的,开始上传后不可以更改。
运行后的样子:
uploadgrid.mxm 上传jar的类,
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="group_creationCompleteHandler(event)" xmlns:mx="library://ns.adobe.com/flex/mx" width="500" height="250"> <s:layout> <s:BasicLayout/> </s:layout> <fx:Declarations> <mx:NumberFormatter id="filesizeFormatter" useThousandsSeparator="true"/> </fx:Declarations> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.events.CloseEvent; import mx.events.CollectionEvent; import mx.events.FlexEvent; import mx.formatters.CurrencyFormatter; import mx.formatters.NumberFormatter; [Bindable] public var deleteenabled:Boolean=true; //文件列表 [Bindable] private var fileRefs: FileReferenceList = new FileReferenceList(); //这个地址是我测试用的服务器地址 [Bindable] private var urlrequest: URLRequest = new URLRequest("http://localhost:8080/auto/FileUploaded"); //文件列表中的文件 [Bindable] public var selectedFiles: ArrayCollection = new ArrayCollection([]); //上传的文件 private var singleThreadFiles: Array = []; //逐个上传文件 private function singleThreadUploadFile(): void { //FIFO:逐个从列表中取出,进行上传 if (singleThreadFiles.length > 0) { var mf: MyFile = singleThreadFiles.pop() as MyFile ; var f:FileReference=mf.fr; f.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, doSingleUploadFileComplete); f.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); f.upload(urlrequest); } else { uploadbutton.enabled=false; uploadtext.text="全部上传成功!"; showuploadjar(); } } private function doSingleUploadFileComplete(event: Event): void { var uploadInfo:String=event.data; var uploadInfoArray:Array = uploadInfo.split("#"); if(uploadInfoArray[0]=="true") { var f: FileReference = event.target as FileReference; f.removeEventListener(Event.COMPLETE, doSingleUploadFileComplete); singleThreadUploadFile(); }else { Alert.show(uploadInfoArray[1]+"请检查网络或程序是否正常,目录是否正确并创建,请删除上传不成功的jar,重新选择后上传!"); selectFileButton.enabled=true; cleanAll.enabled=true; deleteenabled=true; } } //初始化 private function init(): void { Security.allowDomain("*"); fileRefs.addEventListener(Event.SELECT, fileSelectHandler); fileRefs.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } //要上传的文件类型,我这里是jar文件 private function selectFile(): void { var jarfile:FileFilter = new FileFilter("jar文件(*.jar)", "*.jar*"); var allfile:FileFilter = new FileFilter("所有文件(*.*)", "*.*"); var allTypes:Array = new Array(); allTypes.push(jarfile); allTypes.push(allfile); fileRefs.browse(allTypes); } //用户选择的文件,如果需要判断是否可以多次选择同名的文件可以在这里判断 private function fileSelectHandler(event: Event): void { for each (var f: FileReference in fileRefs.fileList) { var mf:MyFile = new MyFile(f); selectedFiles.addItem(mf); } } //出错后的处理 private function ioErrorHandler(e:IOErrorEvent): void { Alert.show(e.text); Alert.show("请检查网络或程序是否正常,请删除上传不成功的jar,重新选择后上传!"); selectFileButton.enabled=true; cleanAll.enabled=true; deleteenabled=true; } //删除列表中的文件 public function removeFile(mf: MyFile): void { var index: int = selectedFiles.getItemIndex(mf); if (index != -1) selectedFiles.removeItemAt(index); } //初始化组件或应用程序 protected function group_creationCompleteHandler(event:FlexEvent):void { init(); } //确认上传的文件 protected function button1_clickHandler(event:MouseEvent):void { Alert.show("开始上传后不能更改选择的jar包 ,确定上传?", "确认上传", Alert.YES|Alert.NO, null, startUpload); } //根据业务的需求上传后不能更改,可以根据自己的业务逻辑去改相应的处理 private function startUpload(e: CloseEvent): void{ if (e.detail == Alert.YES){ selectFileButton.enabled=false; cleanAll.enabled=false; deleteenabled=false; singleThreadFiles = selectedFiles.toArray().concat(); for(var i:int=0;i<singleThreadFiles.length;i++) { if(singleThreadFiles[i] is MyFile) { var mf:MyFile= singleThreadFiles[i] as MyFile; var f:FileReference=mf.fr; trace(f.name); } } singleThreadFiles.reverse(); singleThreadUploadFile(); } } //输出上传后的jar的信息,如果需要更多的信息可以在MyFlie类里找到 private function showuploadjar():void { for(var i:int=0; i<selectedFiles.length;i++) { var mf:MyFile=selectedFiles.getItemAt(i) as MyFile; // Alert.show(mf.uploadFilePath+mf.uploadFileName); trace("上传后的路径:"+mf.uploadFilePath+mf.uploadFileName); mf.removeDateEvent(); } } ]]> </fx:Script> <s:VGroup paddingTop="10"> <mx:VBox> <mx:HBox width="100%"> <mx:Button id="selectFileButton" label="浏览" click="selectFile()"/> <mx:Box width="100%" horizontalAlign="right"> <mx:Button id="cleanAll" click="selectedFiles.removeAll();" label="清空"/> </mx:Box> </mx:HBox> <mx:DataGrid id="files" dataProvider="{selectedFiles}" > <mx:columns> <mx:DataGridColumn width="200" headerText="文件名" dataField="fr.name" /> <mx:DataGridColumn width="100" headerText="大小(字节)" dataField="fr.size"> <mx:itemRenderer> <fx:Component> <mx:Label text="{outerDocument.filesizeFormatter.format(data.size)}" textAlign="right"/> </fx:Component> </mx:itemRenderer> </mx:DataGridColumn> <mx:DataGridColumn width="100" headerText="状态" dataField="uploadlable" /> <mx:DataGridColumn headerText="删除" width="80"> <mx:itemRenderer> <fx:Component> <mx:HBox fontSize="10" fontWeight="normal" fontThickness="1"> <fx:Script> <![CDATA[ protected function linkbutton1_clickHandler(event:MouseEvent):void { var mf:MyFile = data as MyFile; outerDocument.removeFile(mf); } ]]> </fx:Script> <mx:LinkButton label="Delete" click="linkbutton1_clickHandler(event)" enabled="{outerDocument.deleteenabled}"> </mx:LinkButton> </mx:HBox> </fx:Component> </mx:itemRenderer> </mx:DataGridColumn> </mx:columns> </mx:DataGrid> <mx:HBox> <mx:Button label="上传" id="uploadbutton" click="button1_clickHandler(event)" /> <s:Label paddingTop="7" id="uploadtext" text="" /> </mx:HBox> </mx:VBox> </s:VGroup> </s:Application>
自己封装as类MyFile.as:用于存储上传后的信息。
package outsideSys.windows { import flash.events.DataEvent; import flash.events.Event; import flash.events.ProgressEvent; import flash.net.FileReference; /** * @author * 描述: * 创建时间:2012-12-4 下午2:01:56 */ [Bindable] public class MyFile { private var _uploadFileName:String; private var _uploadFilePath:String; private var _uploadIsSuceess:Boolean; private var _uploadProgress:uint; private var _uploadlable:String="等待上传"; private var _fr:FileReference; public function MyFile(f:FileReference) { super(); this.fr=f; _fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadcomplete); // _fr.addEventListener(ProgressEvent.PROGRESS,funcuploadProgress); } public function removeDateEvent():void { _fr.removeEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadcomplete); } protected function uploadcomplete(event: DataEvent): void { //服务器端一定要返回数据,否则,这个方法就不起作用了 var uploadInfo:String=event.data; var uploadInfoArray:Array = uploadInfo.split("#"); if(uploadInfoArray[0]=="true") { this.uploadIsSuceess=true; this.uploadFilePath=uploadInfoArray[1]; this.uploadFileName=uploadInfoArray[2]; this.uploadlable=uploadInfoArray[3]; //trace(uploadlable); trace(uploadFileName+"完成2"); } } // protected function funcuploadProgress(event: ProgressEvent): void // { // this.uploadProgress = event.bytesLoaded / event.bytesTotal * 100; // } public function get uploadlable():String { return _uploadlable; } public function set uploadlable(value:String):void { _uploadlable = value; } public function get fr():FileReference { return _fr; } public function set fr(value:FileReference):void { _fr = value; } public function get uploadProgress():uint { return _uploadProgress; } public function set uploadProgress(value:uint):void { _uploadProgress = value; } public function get uploadIsSuceess():Boolean { return _uploadIsSuceess; } public function set uploadIsSuceess(value:Boolean):void { _uploadIsSuceess = value; } public function get uploadFilePath():String { return _uploadFilePath; } public function set uploadFilePath(value:String):void { _uploadFilePath = value; } public function get uploadFileName():String { return _uploadFileName; } public function set uploadFileName(value:String):void { _uploadFileName = value; } } }
后台的java代码FileUploaded.java:
package com.web.action; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; 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; import com.system.constants.PropertiesFile; import com.system.util.PropertiesAnalysis; //import com.system.constants.PropertiesFile; //import com.system.util.PropertiesAnalysis; /** * * @author crystal */ public class FileUploaded extends HttpServlet { /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response */ // 定义文件的上传路径 // private String uploadPath = PropertiesAnalysis.findProperties(PropertiesFile.DEPLOYXONFIG, "jarpath"); private String uploadPath = "D://jarfile//"; // 限制文件的上传大小 private int maxPostSize = 100 * 1024 * 1024; public FileUploaded() { super(); } public void destroy() { super.destroy(); } protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("Access !"); response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); //保存文件到服务器中 DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setSizeThreshold(4096); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(maxPostSize); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String date=sdf.format(new Date()); String jaruploadPath=uploadPath+date+"\\"; File file = new File(jaruploadPath); //判断文件夹是否存在,如果不存在则创建文件夹 if (!file.exists()) { file.mkdir(); } 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); String newname=name.split(".jar")[0]+new Date().getTime()+".jar"; try { item.write(new File(jaruploadPath + newname)); //我输出的格式:true|flase#文件路径#文件名#是否成功的信息,用#号隔开的。 response.getWriter().write("true#"+jaruploadPath+"#"+newname+"#上传成功。"); } catch (Exception e) { e.printStackTrace(); response.getWriter().write("false#"+e.getMessage()); } } } } catch (FileUploadException e) { e.printStackTrace(); response.getWriter().write(e.getMessage()); System.out.println("false#"+e.getMessage() + "结束"); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. * @param request servlet request * @param response servlet response */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP <code>POST</code> method. * @param request servlet request * @param response servlet response */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. */ public String getServletInfo() { return "Short description"; } // </editor-fold> }
web.xml中的xml配置文件:
<!-- flex 文件上传 --> <servlet> <servlet-name>FileUploaded</servlet-name> <servlet-class>com.web.action.FileUploaded</servlet-class> </servlet> <servlet-mapping> <servlet-name>FileUploaded</servlet-name> <url-pattern>/FileUploaded</url-pattern> </servlet-mapping>
发表评论
-
原创 flex 折线图和柱状图叠加显示
2014-06-04 10:08 3468<?xml version="1.0&qu ... -
原创arcgis server flex 实现在地图上绘制折线图
2014-03-14 09:40 3500原创arcgis server flex 实现在地图上绘 ... -
flex自定义list展示成表格的样式,增加单击事件
2014-03-12 15:41 5977flex自定义list展示成表格的样式,增加单击事件:下面 ... -
flex横向带图下拉列表和联动下拉列表
2013-01-30 14:54 3337flex横向带图下拉列表和联动下拉列表 效果图: ... -
flex 前后台类的传递
2012-12-26 11:42 1738前台的as 类:最重要的是要加com.system.domai ... -
flex表格内容文字可复制
2012-09-17 17:19 2757在flex应用中,有些文字数据是有用的,需要copy出来。但是 ... -
java读写word文档
2012-08-30 17:57 9027网上关于java读写word的文档很多,没找到最 ... -
java改变png图片的透明度
2011-07-07 16:49 9874package cn; import java.awt. ... -
flex调用java
2012-05-25 16:19 1244flex 调用java配置多个java类: 第一个remoti ...
相关推荐
在Flex中处理文件上传,特别是上传多个文件,是一个常见的需求,特别是在构建支持用户上传大量数据的应用程序时。 在Flex中实现多文件上传,首先需要理解FileReference类。FileReference是Flash Player提供的一个...
`FileReference`允许用户从本地文件系统中选择一个或多个文件。在用户选择文件后,我们可以监听`select`事件来获取选中的文件列表。 ```actionscript var fileRefList:FileReferenceList = new FileReferenceList()...
Flex多文件上传组件是一种在Adobe Flex环境中实现的高级功能,允许用户一次性选择并上传多个文件。这个组件在Web应用程序中非常实用,特别是在处理大量图片、文档或其他类型文件上传的场景下,大大提升了用户体验。 ...
"flex 多文件上传"是指使用Adobe Flex框架实现的能够同时上传多个文件的功能。Flex是一款强大的RIA(富互联网应用)开发工具,它基于ActionScript编程语言和Flash Player运行时环境,提供丰富的用户界面组件和交互...
标题“Flex多文件上传+md5验证文件是否上传”揭示了该技术的核心要点:使用Flex来处理多个文件的上传,并通过MD5哈希校验确保上传的文件与原始文件一致,防止数据篡改。 1. **多文件上传**:在Flex中,可以利用...
综上所述,实现"flex文件上传下载,在线以pdf形式浏览文件"这一功能,需要综合运用前端开发、后端接口设计、文件处理和安全策略等多个领域的知识,为用户提供便捷、安全的文件管理体验。在实际开发过程中,还需要...
若要支持多文件上传,需要使用`FileReferenceList`类,它是一个包含多个`FileReference`对象的集合,用户可以选择并上传多个文件。 3. **设置上传大小限制**:在客户端,可以通过`FileReference`的`setUploadSize()...
在Flex中,这种组件通常会显示一个文件选择对话框,让用户选择要上传的文件,并且会提供一个进度条来显示上传进度,增强用户体验。 Flex是一个开源的框架,用于构建富互联网应用(RIA),它使用MXML和ActionScript...
综上所述,"flex+java文件上传"涉及到前端的Flex界面设计与交互、Flash Player运行环境、后端的Java处理逻辑以及文件上传的安全性和性能优化等多个知识点。在实际应用中,开发者需要结合这些技术来实现稳定、安全且...
将ASP.NET和Flex结合,我们需要在Flex客户端创建一个UI,让用户能够选择多个文件并触发上传。在用户选择文件后,Flex会将文件作为二进制流发送到服务器端的ASP.NET接口。服务器端的ASP.NET接口接收这些流,然后进行...
例如,`FileReferenceList`类支持一次选择多个文件,`FileReference`的`upload()`方法可以接受参数来实现断点续传。 8. **安全考虑**:为了防止恶意文件上传,应限制可上传的文件类型和大小。同时,服务端需要对...
Flash组件可以直接访问用户的本地文件系统,允许用户选择多个文件并一次性上传,提高了用户体验。在这个项目中,"upload.swf"就是使用Flash技术编译的SWF文件,它是前端上传界面的核心部分,能够处理用户的文件选择...
FileReference提供了一种与用户系统文件系统交互的方式,用户可以选择一个或多个文件,并通过FileReference对象执行读取、保存或上传操作。 2. **事件监听**:在文件上传过程中,我们需要监听FileReference对象上的...
1. **FileReference类**:Flex中的FileReference类是与文件操作相关的基础,它允许用户选择一个或多个文件,并提供了读取、保存和上传文件的功能。 2. **事件监听**:在用户选择文件后,我们需要监听DataEvent....
3. **事件监听**:FileReference对象支持多个事件,如“select”(文件选择后触发)、“data”(文件数据加载时触发)和“complete”(上传完成时触发)。通过监听这些事件,可以控制用户界面的更新。 4. **...
在多文件上传场景中,Flex可以提供用户友好的界面,允许用户选择并上传多个文件。 在Flex中,我们可以利用`FileReference`类来处理文件上传。`FileReference`类提供了选择、读取和上传本地文件的方法。当用户选择...
在Flex中,可以实现单个文件或多个文件的上传。这里提到的“SWFUpload”是一个流行的JavaScript库,它与Flash Player结合使用,允许在浏览器中实现复杂的文件上传功能,包括多文件选择和进度条显示。虽然SWFUpload...
Flex多文件上传是一种在Web应用中实现用户同时上传多个文件的技术。这个小demo是使用Adobe Flash Builder 4.0作为开发环境,结合Java Servlet后端处理来完成的。Flash Builder是一款强大的集成开发环境(IDE),专门...
- **多文件上传**:通过创建多个`FileReference`对象,可以实现多文件同时上传,提高用户体验。 - **文件类型验证**:在用户选择文件时,可以通过`FileReference`的`type`属性检查文件类型,避免非法文件的上传。 ...
此外,服务器端也需要相应的接收和处理文件的逻辑,这可能涉及到文件存储、大小限制、文件类型检查等多个方面。 总的来说,"flex上传文件夹插件"是提升Flex应用上传功能的有效解决方案,尤其适合需要批量上传文件的...