springMVC实现上传文件功能

1.spring_fileupload.xml配置文件如下:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--<property name="maxUploadSize" value="10485760"></property>-->
</bean>

2.FileUploadAction控制器如下:

        @RequestMapping(params = "method=up", method = RequestMethod.POST)
	@ResponseBody
	public Map<String, String> uploadSolver(@RequestParam MultipartHttpServletRequest request {
		Map<String,String> info = new HashMap<String,String>();
		MultipartFile patch = request.getFile("file");
		if (!patch.isEmpty()) {
			try {
				String fileName = patch.getOriginalFilename();

				/**
				 * 获取文件后缀
				 */
				System.out.println(fileName);
				String suffix = fileName.substring(fileName.lastIndexOf("."));

				/**
				 * 判断上传的文件格式是否正确
				 */
				if ((".zip.rar.gz.tar.bz2.txt".indexOf(suffix.toLowerCase()) != -1)) {
					Integer fileSize = (int) patch.getSize() / 1024;

					/**
					 * 如果文件小于10M,则上传文件,否则提示用户不能超过10M
					 */
					if (fileSize <= 10240) {

						String uploadPath = ClassLoaderUtil.getProperties("uploadFile.properties").getProperty("filePath");
						System.out.println(uploadPath);
						File filePath = new File(request.getSession()
								.getServletContext().getRealPath(uploadPath));
						System.out.println(filePath.getAbsolutePath());
						/**
						 * 判读存储文件路是否存在,不存在则创建
						 */
						if (! filePath.exists()) {
							filePath.mkdirs();
							System.out.println("上传文件路径不存在,创建成功!");
						}
						/**
						 * 文件开始上传到服务器上
						 */
						patch.transferTo(new File(filePath.getAbsolutePath()+"\\"+fileName));
						info.put("success", "true");
						info.put("msg", "上传成功!");

					} else {
						System.out.println("上传的文件太大,文件大小不能超过10M");
						info.put("success","false");
						info.put("msg", "上传的文件太大,文件大小不能超过10M");
					}
				} else {
					System.out.println("上传的文件格式不支持");
					info.put("success","false");
					info.put("msg", "上传的文件格式不支持");
					
				}
			} catch (IOException e) {
				e.printStackTrace();
				System.out.println("系统异常");
				info.put("success","false");
				info.put("msg", "系统异常");
			}
		}
		return info;
	}

 3.前端表单使用Extjs 如下:

Ext.onReady(function (){
	
	var addFileTextField = new Ext.form.TextField({
		name:'file',
		allowBlank:false,
                //使用HTML中的filetext
                inputType:'file'
			
	});
	
	
	var addFileFormPanel = new Ext.form.FormPanel({
		 autoDestory:true,
                 fileUpload:true,
		 frame:true,
		 width:300,
		 autoHeight:true,
		 labelAlign:'right',
		 labelWidth:60,
		 defaultType:'textfield',
		 defaults:{width:200,allowBlank:false},
		 
		 items: [addFileTextField]
	});
	
	
	var addFileWindow = new Ext.Window({
			id : "addFileWindow",
			title : "上传文件",
			width : 640,
			height : 200,
			resizable : false,
			modal : true,
			maximizable : false,
			closeAction : "hide",
			constrain : true,
			layout : "vbox",
			animateTarget:'target',
			layoutConfig:{
				align: "stretch"
			},
			items : [addFileFormPanel],
			buttons:[
				{text:'上传',handler:function (){
						if(! addFileFormPanel.getForm().isValid()) {
							return false;
						}
						//上传
						addFileFormPanel.getForm().submit({
							url:'uploadFile.do?method=up',
							waitMsg: '正在上传...',
							success: function (form,response){
								Ext.Msg.alert('success',response.result.msg);
							},
							failure: function (form,response){
								Ext.Msg.alert('error',response.result.msg);
							}
						});
					}
				}
			]
	});
});
 

猜你喜欢

转载自jasonbrooke.iteye.com/blog/1042061