SpringMVC的文件上传
一、SpringMVC实现文件上传
文件上传源码想下载的:https://github.com/Cqypyglz/SpringMVCFileUpload
1.文件上传的前提
1) form 表单的 enctype 取值必须是:multipart/form-data
2)method 属性取值必须是 Post
3)提供一个文件选择域<input type=”file” />
注意:当 form 表单的 enctype 取值不是默认值后,request.getParameter()将失效。
2.实现步骤
1)SpringMVC框架提供了MultipartFile对象,该对象表示上传的文件,要求变量名称必须和表单file标签的 name属性名称相同。
2)配置文件解析器
<!--配置文件解析器--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="1000000"></property> </bean>
3)Controller中的代码如下:
@RequestMapping("/fileUpload2") public String fileUpload2(HttpServletRequest request, MultipartFile upload) throws Exception { System.out.println("文件上传"); //使用fileupload组件完成上传文件 //上传的位置 String path = request.getSession().getServletContext().getRealPath("upload/"); //判断,该路径是否存在 File file =new File(path); if(!file.exists()){ file.mkdirs(); } //上传文件项 //获取上传文件的名称 String filename = upload.getOriginalFilename(); //把文件名称设置唯一值 String uuid = UUID.randomUUID().toString().replace("-", ""); filename=uuid+"-"+filename; //完成上传文件 upload.transferTo(new File(path,filename)); return "success"; }
二、 SpringMVC跨服务器方式文件上传
1.导入依赖
<dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-core</artifactId> <version>1.18.1</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-client</artifactId> <version>1.18.1</version> </dependency>
2.Controller的代码实现
@RequestMapping("/fileUpload3") public String fileUpload3(MultipartFile upload) throws Exception { System.out.println("跨服务器文件上传"); //定义上传文件服务器路径 String path="http://localhost:9090/uploads/"; //上传文件项 //获取上传文件的名称 String filename = upload.getOriginalFilename(); //把文件名称设置唯一值 String uuid = UUID.randomUUID().toString().replace("-", ""); filename=uuid+"-"+filename; //完成跨服务器上传文件 //创建客户端对象 Client client = Client.create(); //和图片服务器进行连接 WebResource webResource = client.resource(path + filename); //上传文件 webResource.put(upload.getBytes()); return "success"; }