1.maven引入jar包
<dependencies>
<!-- spring mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- jackson:json序列化和反序列化 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
<!-- 上传文件 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<!-- 跨服务器上传文件 -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19</version>
</dependency>
</dependencies>
2.spring mvc配置文件:
3.前端代码:
4.spring mvc后端代码:
package lingbug.controller;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
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.lang.reflect.Field;
import java.util.List;
import java.util.UUID;
@Controller
@RequestMapping("/testFileupload")
public class TestFileuploadController {
@RequestMapping("/fileuploadNormal")
public String testFileuploadNormal(HttpServletRequest request) throws Exception {
System.out.println("传统上传文件方式执行了...");
//文件夹路径
String folderPath = request.getSession().getServletContext().getRealPath("/normalUpload/");
File folder = new File(folderPath);
//如果文件夹不存在,创建
if (!folder.exists()) {
folder.mkdirs();
}
//初始化请求解析器
DiskFileItemFactory diskFactory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(diskFactory);
//解析请求
List<FileItem> fileList = upload.parseRequest(request);
//循环
for (FileItem item : fileList) {
//判断是否是默认表单元素
if (item.isFormField()) {
} else {
//文件名称
String fileName = item.getName();
//随机数,防止文件覆盖
String uuid = UUID.randomUUID().toString().replace("-", "");
String newFileName = uuid + "_" + fileName;
//保存文件
File file = new File(folderPath, newFileName);
item.write(file);
//删除临时文件
item.delete();
}
}
return "success";
}
@RequestMapping("/testFileuploadSpringMvc")
public String testFileuploadSpringMvc(HttpServletRequest request, MultipartFile uploader) throws Exception {
//uploader必须与前端页面的name一致
System.out.println("使用spring mvc上传文件执行了...");
//文件夹路径
String folderPath = request.getSession().getServletContext().getRealPath("/normalUpload/");
File folder = new File(folderPath);
//如果文件夹不存在,创建
if (!folder.exists()) {
folder.mkdirs();
}
//文件名称
String fileName = uploader.getOriginalFilename();
//随机数,防止文件覆盖
String uuid = UUID.randomUUID().toString().replace("-", "");
String newFileName = uuid + "_" + fileName;
//保存文件
File file = new File(folderPath, newFileName);
uploader.transferTo(file);
return "success";
}
@RequestMapping("/testFileuploadSpringMvcCrossServer")
public String testFileuploadSpringMvcCrossServer(MultipartFile uploader) throws Exception {
//uploader必须与前端页面的name一致
System.out.println("使用spring mvc跨服务器上传文件执行了...");
//假设要上传到另外一台服务器的uploadFiles文件夹下
String folderPath = "http://localhost:9090/uploadFiles/";
//文件名称
String fileName = uploader.getOriginalFilename();
//随机数,防止文件覆盖
String uuid = UUID.randomUUID().toString().replace("-", "");
String newFileName = uuid + "_" + fileName;
//文件路径
String filePath = folderPath + newFileName;
//开始跨服务器操作
//1.初始化客户端,和文件服务器通信
Client client = Client.create();
//实例化请求资源,将文件路径传递过去
WebResource webResource = client.resource(filePath);
//将文件放在服务器刚请求的路径:注意,放的是字节,所以要uploader.getBytes()
webResource.put(uploader.getBytes());
return "success";
}
}
如果提示class not found,记得将需要的相应jar包放在tomcat的lib文件夹下,一般是common-io和commons-fileupload
Ending~