SpringMVC 本地文件上传+跨服务器文件上传
一、 本地文件上传
先导入两个jar包依赖坐标
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
文件上传的jsp页面 注意form标签中的 entype属性需设置为multipart/form-data
<%@ page contentType=”text/html;charset=UTF-8” language=”java” %>
Title
- controller控制页面
这里用到了MultipartFile 对象 主要是用来文件上传
package com.qst.Controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.UUID;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/fileupload")
public String fileupload(HttpServletRequest request , MultipartFile upload) throws Exception {
System.out.println("上传。。。");
String path = request.getSession().getServletContext().getRealPath("uploads");
//判断该路径是否存在
File file = new File(path);
if(!file.exists()){
//如果不存在则创建一个目录
file.mkdirs();
}
//获取上传文件的名称
String filename = upload.getOriginalFilename();
//把文件名设置成一个唯一值
String uid = UUID.randomUUID().toString().replace("-","");
filename = uid + "_" + filename;
//完成文件上传 , 将文件存放到 path 指定目录下 并 把名字设置为 filename 指定的名字
upload.transferTo(new File(path,filename));
return "success";
}
}
- 配置文件解析器
这里bean的id必须为multipartResolver ,bean里还可以添加一些参数 如设置上传文件的大小的最大值
<!--配置文件解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 配置上传文件的大小-->
<property name="maxUploadSize" value="10000000"/>
</bean>
二、跨服务器文件上传
先导jar包
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-client -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.19</version>
</dependency>
</dependencies>
创建连个服务器一个用于接收文件,一个用于上传文件。设置不同端口号
在接收文件的服务器项目中 需要开启一个支持写操作
在web.xml中加入
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
jsp页面也普通上传文件一样
<%@ page contentType=”text/html;charset=UTF-8” language=”java” %>
Title
controller
package com.qst.Controller;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.UUID;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/fileuploadServer")
public String fileuploadServer(MultipartFile upload) throws Exception {
//设置上传服务器的路径 要保证有loads这个目录
String path = "http://localhost:8089/loads";
//获取上传文件的名称
String filename = upload.getOriginalFilename();
//把文件名设置成一个唯一值
String uid = UUID.randomUUID().toString().replace("-","");
filename = uid + "_" + filename;
//创建客户端对象
Client client = Client.create();
//与服务器进行连接
WebResource webResource = client.resource(path + filename);
//进行文件上传,并将文件转换成字节流
webResource.put(upload.getBytes());
return "success";
}
}
进行上传时需先开启接收文件的也服务器
还没有评论,来说两句吧...