基于SpringMVC的文件上传

来源:互联网 发布:js 匿名函数 访问变量 编辑:程序博客网 时间:2024/04/24 02:45

文件上传就是把用户资源保存到服务器,供用户下次使用

使用SpringMVC上传文件挺容易

1.加入需要的文件上传的jar包(commons-fileupload-1.3.jar和commons-io-2.0.jar)只要版本不是特别低都可以

2.配置Spring-MVC.xml(具体其他参数自行google,这里只是限制了上传文件的大小10M)

<!-- 上传文件拦截,设置最大上传文件大小 10M=10*1024*1024(B)=10485760 bytes --><bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="10485760" /></bean>
3.在控制层(controller)处理文件上传请求

/*文件表单*/@RequestMapping(value="uploadpicture",produces = "text/html;charset=UTF-8")@ResponseBodypublic String updatePic(@RequestParam("userpicture") MultipartFile[] files,User user){//1.调用服务层保存用户的图片到服务器//获取用户id:用来创建一个文件夹来保存用户文件String id=user.getUid()+"";//文件路径String basePath=session.getServletContext().getRealPath("/")+"upload/"+id+"/";//+file.getOriginalFilename();if(userService.saveFiles(files, basePath)){//2.把图片保存后的路径更新到用户的表user.setUpicture("");if(userService.updateUserBySelected(user)>0){return "success";}}return "{'fail':'文件保存出错'}";
解释:uploadpicture是请求名称,produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;(我这里可以不写,但是没影响),ResponseBody指定响应的类型为xml或json.

这里使用MultipartFile[] files数组来接受上传的多文件,然后调用服务层来处理文件的保存。

public boolean saveFiles(MultipartFile[] files,String path) {if(files!=null && files.length>0){//文件不空切大于0个for(MultipartFile file:files){//循环添加文件名称并且保存文件到指定的路径boolean flag=saveFile(file,path+"/"+file.getOriginalFilename());if(!flag){//文件上传出错return false;}}return true;}return false;//files为空的}//保存单个文件到指定路径public boolean saveFile(MultipartFile file,String path){if(!file.isEmpty()){//如果文件不空try{File f=new File(path);if(!f.exists()){//文件目录不存在f.mkdirs();}file.transferTo(new File(path));System.out.println("保存路径为:"+path);return true;}catch(Exception e){e.printStackTrace();}}return false;}

具体有些细节,出现问题的时候就要找到问题。毕竟没有程序是零Bug的。





1 0
原创粉丝点击