Spring boot跨服务上传文件
最近在写项目的时候,需要大量的文件上传下载,于是想到了,文件的跨服务器上传下载
首先创建一个boot应用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--引入Java客户端-->
<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>
在yaml中进行文件的配置,和路径的配置
#设置文件大小
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=30MB
spring.servlet.multipart.max-request-size=30MB
#设置文件上传到服务器路径
file.upload.path=http://localhost:8099/fileuploadserver_war/uploads/
编写一个controller
用于接受浏览器传过来的文件以及其他信息
@Controller
public class FileController {
@Value("${file.upload.path}")
private String path;
@RequestMapping("/fileupload")
@ResponseBody
private String method1(@RequestParam("upload") MultipartFile upload) throws IOException {
System.out.println("文件上传");
//获取文件后缀名
String filename = upload.getOriginalFilename();
// 把文件的名称设置唯一值,uuid
String uuid = UUID.randomUUID().toString().replace("-", "");
filename = uuid + "_" + filename;
// 创建客户端的对象
Client client = Client.create();
// 和图片服务器进行连接
WebResource webResource = client.resource(path + filename);
webResource.put(upload.getBytes());
return "上传成功";
}
}
在创建一个文件存放的服务器创建成为一个maven过程,这里面只需要创建一个uploads文件夹就好
配置一个tomcat服务器
注意修改端口号跟jmx端口
到tomcat目录下的conf文件(我的是7.0),修改web.xml文件
在org.apache.catalina.servlets.DefaultServlet这个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>
这样,tom就可以接受put请求过来的文件,但是不安全
编写一个前端页面
在这里插入代码片
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<h3>文件上传</h3>
<form method="post" enctype="multipart/form-data" action="fileupload">
<input type="file" name="upload">
<br>
<input type="submit" value="上传">
</form>
</body>
</html>
下面进行测试
启动boot应用
没有
没有报错
在启动接收端的服务器
没报错
访问boot端的地址
开始上传文件
上传成功,我们去接收端服务器看一下
发现upload中没有刚刚上传的文件(qwe.png不是刚刚上传的)
在去target中查看
也没有刚刚上传的文件
我们在去服务器项目部署文件中查看
刚刚上传的文件在这里了以及,接下来直接访问一下这个图片
可以直接访问到