MiniFileUpload.mxml
<?xml version="1.0" encoding="utf-8"?> <s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="200" height="20" creationComplete="init(event)"> <fx:Script> <![CDATA[ import mx.charts.CategoryAxis; import mx.controls.Alert; import mx.events.FlexEvent; import mx.rpc.events.FaultEvent; import net.ask123.ecommerce.util.DateUtils; import net.ask123.ecommerce.util.StringUtils; import spark.formatters.DateTimeFormatter; private var _refUploadFile:FileReference; //...文件类型限制 调用时传入 public var fileFilters:Array; //...文件夹地址 调用时传入 public var filePath:String; //...文件地址 public var text:String; //...服务器端需要 private var fileName:String; private function addFiles():void { if(fileFilters != null){ _refUploadFile.browse(fileFilters); }else{ _refUploadFile.browse(); } } private function getFileName():String { return DateUtils.nowDateShort("yyyyMMddHH")+StringUtils.randRange(1000,9999); } private function onSelectFile(event:Event):void { try{ var params:URLVariables = new URLVariables(); params.name = fileName = getFileName(); params.filePath = filePath; params.action = "/fileUpload.shtml"; var request:URLRequest = new URLRequest("/fileUpload.shtml"); request.method = URLRequestMethod.POST; request.data = params; _refUploadFile.upload(request,"fileData"); }catch(e:Error){ Alert.show("出现异常"); } } protected function init(event:FlexEvent):void { fileAddressID.text=text; _refUploadFile=new FileReference(); _refUploadFile.addEventListener(Event.SELECT, onSelectFile); _refUploadFile.addEventListener(Event.COMPLETE, hsResultHandler); _refUploadFile.addEventListener(IOErrorEvent.IO_ERROR, onUploadIoError); } private function hsResultHandler(event:Object):void{ fileAddressID.text = "/upload/"+filePath+"/"+DateUtils.nowDateShort("yyyy")+"/"+ DateUtils.nowDateShort("MM")+"/"+fileName+"."+_refUploadFile.name.split(".")[1]; text = fileAddressID.text; } private function hsFaultHandler(e:FaultEvent):void{ Alert.show(e.fault.toString(),'http请求错误'); } private function onUploadIoError(event:IOErrorEvent):void { Alert.show(event.text); } ]]> </fx:Script> <s:HGroup verticalAlign="middle"> <s:Button id="btnAdd" width="80" label="选择文件" click="addFiles()" /> <s:Label id="fileAddressID" verticalAlign="middle" click="navigateToURL(new URLRequest(fileAddressID.text), '_blank')" /> </s:HGroup> </s:Group>
FileUploadController.java
/** * 公用上传Action * UploadFile.name 文件名,从前台传人 * UploadFile.filePath 路径,从前台传人 ad为存放广告的文件夹 news为存放新闻的文件夹 * 上传之后的路径地址为 /upload/UploadFile.filePath/今年(2012)/当月(02)/UploadFile.name * * * @param file * @return */ @RequestMapping(value = "fileUpload.shtml") @ResponseBody public String processImageUpload(UploadFile file) { try { File uploadFile; String path = Constants.FILEUPLOADADDRESS + "/" + file.getFilePath() + "/" + DateUtils.getUserDate("yyyy") + "/" + DateUtils.getUserDate("MM"); FileUtils.makehome(path); uploadFile = new File(path + "/" + file.getName() + "." + file.getFileData().getOriginalFilename().split("\\.")[1]); file.getFileData().getFileItem().write(uploadFile); } catch (Exception e) { e.printStackTrace(); } return "{" + file.getFileData().getOriginalFilename() + "}!Success!"; }
剩下的一些XML配置
applicationContent.xml
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- set the max upload size100MB --> <property name="maxUploadSize"> <value>104857600</value> </property> <property name="maxInMemorySize"> <value>4096</value> </property> </bean>
调用的页面
public var imageTypes:FileFilter = new FileFilter("图片 (*.jpg, *.jpeg, *.gif,*.png)", "*.jpg; *.jpeg; *.gif; *.png"); <mx:FormItem label="图片" required="true"> <components:MiniFileUpload id="fileUploadID" filePath="ad" text="{_adP.image_url}" fileFilters="{new Array(imageTypes)}" /> </mx:FormItem>