1. 前台Flex:
protected function selectImgHandler(event:AppGlobalEvent):void
{
// TODO Auto-generated method stub
_file = new FileReference();
_file.browse([new FileFilter("Images (*.jpg, *.jpeg, *.bmp, *.png)", "*.jpg;*.jpeg;*.bmp;*.png")]);
_urlRe = new URLRequest();
_urlRe.url = UploadConfig.faceSearchSelectImg;
_urlRe.method = URLRequestMethod.POST;
_file.addEventListener(Event.SELECT,fileReferenceSelectHandler);
_file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadResultHanlder);
_file.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
}
protected function ioErrorHandler(event:IOErrorEvent):void
{
// TODO Auto-generated method stub
trace(event.toString());
}
/**
*选择图片后确认
* @param event
*
*/
protected function fileReferenceSelectHandler(event:Event):void
{
// TODO Auto-generated method stub
if(_file)
{
_file.addEventListener(Event.COMPLETE,fileReferenceCompleteHandler);
_file.load();
}
}
/**
* 上传图片到服务器 获取图片路径
* @param event
*
*/
protected function uploadResultHanlder(event:DataEvent):void
{
// TODO Auto-generated method stub
trace(event);
}
/**
*预览上传图片
* @param event
*
*/
protected function fileReferenceCompleteHandler(event:Event):void
{
// TODO Auto-generated method stub
if(_file)
{
_file.removeEventListener(Event.COMPLETE,fileReferenceCompleteHandler);
(this.view["img"] as SWFLoader).source={};
(this.view["img"] as SWFLoader).source = _file.data;
//_file = FileReference(event.target);
_file.upload(_urlRe,"file");
}
}
2. 后台SpringMVC框架
@RequestMapping("singleFileUpload.do")
@Produces(MIME.APPLICATION_JSON)
@ResponseBody
public Map<String, Object> singleFileUpload(HttpServletRequest request,HttpServletResponse response,@RequestParam("file")MultipartFile file ) {
response.setContentType("text/html; charset=UTF-8;");
Map<String, Object> result = new HashMap<String, Object>();
try {
response.reset();
String rootPath = request.getParameter("rootPath");
if (rootPath == null)
rootPath = "";
rootPath = rootPath.trim();
if (rootPath.equals("")) {
rootPath = request.getSession().getServletContext().getRealPath("");
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date date = new Date();
String dateStr = sdf.format(date);
String path = ftpRootPath+"/"+dateStr+"/"+date.getHours()+"/"+UUID.randomUUID().toString()+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
boolean uploadsuccess = ftpHelper.uploadFile(path, file.getInputStream());
if(uploadsuccess){
result.put("status", UPLOAD_SUCCSSS);
result.put("filePath", path);
}else{
result.put("status", UPLOAD_FAILURE);
result.put("errorMessage", "上传失败");
}
} catch (Exception e1) {
result.put("status", UPLOAD_FAILURE);
result.put("errorMessage", "上传失败");
e1.printStackTrace();
}
return result;
}
传递参数时,如果用
@RequestParam("file")MultipartFile file
进行接收,则需注意前面的@RequestParam("file")进行注解,否则获取不到该file对象,可能报如下错误:
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]: Specified class is an interface