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>