论坛首页 AJAX版 JQuery

jquery和springmvc多文件上传

浏览 198 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-04-22 关键字: jquery springmvc 多文件上传
jquery的插件使用的是jQuery Multiple File Upload Plugin v1.27 地址 http://jquery.com/plugins/project/MultiFile/

需要修改源代码,在js的282行
slave.name = (slave.name || $(MASTER).attr('name') || 'file');// + (slave.i>0?slave.i:''); // same name as master element

去掉注释,让input name就生成不同名称了,不然post上来的文件数据都是没有名字的.

页面端代码:
<script type="text/javascript">
<!--
$().ready(function() {
	$('#houseMaps').MultiFile({
	  accept:'gif|jpg|png|jpeg|bmp', max:6, STRING: {
	   remove:'删除',
	   selected:'Selecionado: $file',
	   denied:'不支持上传该文件类型 $ext!'
	  }
 	});
});
//-->
</script>
<form method="post" action="xxx.do?method=uploader" enctype="multipart/form-data">
<input type="file" id="houseMaps" name="houseMaps"/>
</form>


spring mvc端:

public ModelAndView uploader(HttpServletRequest request,HttpServletResponse response,UploadFormBean ufb) throws ServletRequestBindingException, HouseImgUploadException, IOException{
	MultipartFile styleMap = ufb.getStyleMap();
	Set<MultipartFile> mfs = getFileSet(request);
	for(MultipartFile mf : mfs){
	   String imgPath = uploadFileAndCallback(mf);
	   //拿到的imgPath就是图片的相对于contextPath的存储路径了
	}
	
	return new ModelAndView("xxx");		
}

public Set<MultipartFile> getFileSet(HttpServletRequest request) {
	MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
	Set<MultipartFile> fileset = new LinkedHashSet<MultipartFile>();
	for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) {
		String key = (String)it.next();
		MultipartFile file = multipartRequest.getFile(key);
		if (file.getOriginalFilename().length() > 0) {
			fileset.add(file);
		}
	}
	return fileset;
}
private String uploadFileAndCallback(MultipartFile file) throws HouseImgUploadException, IOException {
	if(validateFile(file)){
		String filename = file.getOriginalFilename();
		String extName = filename.substring(filename.lastIndexOf(".")).toLowerCase();
		String lastFileName = System.currentTimeMillis()+CalendarUtil.getRadomValue()+extName;
		//图片存储的相对路径
		String path = sp+resource_subpath_name+sp+houseId+sp;
		String fileFullPath = getServletContext().getRealPath(resource_name)+path+lastFileName;
		FileCopyUtils.copy(file.getBytes(),new File(fileFullPath));
		return "/"+resource_name+"/"+resource_subpath_name+"/"+lastFileName;
	}else{
		throw new HouseImgUploadException("上传文件不符合规格");
	}
		
}
private boolean validateFile(MultipartFile file) {
	if(file.getSize()<0 || file.getSize() > 2000000) 
               return false;
	String filename = file.getOriginalFilename();
	String extName = filename.substring(filename.lastIndexOf(".")).toLowerCase();
	if(extName.equals(".jpg") || extName.equals(".gif") || 
		extName.equals(".png") || extName.equals(".bmp") || extName.equals(".jpeg")){
		return true;
	}else{
		return false;
	}
}



UploadFormBean:

public class UploadFormBean {
	
	private MultipartFile styleMap;

	public MultipartFile getStyleMap() {
		return styleMap;
	}

	public void setStyleMap(MultipartFile styleMap) {
		this.styleMap = styleMap;
	}

	

}
   
论坛首页 AJAX版 JQuery

跳转论坛:
JavaEye推荐
    快速回复 引用上一条消息 (Alt+S)