Spring boot跨服务上传文件

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中查看
在这里插入图片描述
也没有刚刚上传的文件
我们在去服务器项目部署文件中查看在这里插入图片描述
刚刚上传的文件在这里了以及,接下来直接访问一下这个图片
在这里插入图片描述
可以直接访问到

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值