springboot跨域上传文件(图片)到Linux远程服务器(本地操作也一样)把tomcat作为文件服务器

一、把tomcat做为文件服务器

1、修改tomcat下面的conf/server.xml文件

下面这是我用宝塔面板修改tomcat下面的server.xml文件 ,没有改tomcat的启动端口 debug="0" 可加可不加,不影响(这里仅仅说明host标签下面一些标签的作业,和上图作用一样)

 上图中docBase="uploadfiles"和appBase="webapps",指tomcat文件目录下的 webapps 文件中的 uploadfiles 文件夹(没有创建一个就是下文的第二步)

path="/uploadfiles" 指可以在 http:// {ip地址(如:127.0.0.1)}:8080/uploadfiles 访问 uploadfiles 文件夹中的文件

<Context docBase="uploadfiles" path="/uploadfiles" debug="0" reloadable="true"/>

2、在tomcat文件下面的webapps文件夹(对应上图的 appBase="webapps")中新增uploadfiles文件夹用来存上传后的文件(对应上图的 docBase="uploadfiles" )

3、修改tomcat下面的conf/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>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>readonly</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

4、启动tomcat,如果是远程服务器修改完即可 

5、效果展示:在浏览器中输入 http://{ip地址(如:127.0.0.1)}:8080/uploadfiles

二、springboot实现跨域文件上传

1、导入maven依赖

        <!--跨域上传文件-->
        <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、添加 application.yaml 文件 设置最大传输文件容量

spring:
  servlet:
    multipart:
      enabled: true
      max-file-size: 30MB
      max-request-size: 30MB

3、后端controller代码(使用UUID保证文件不重名)

这里有个坑,就是 myfile.getOriginalFilename() 这串代码是获取图片的名字,但名字带中文的话,上传会失败,所以这里我只加文件名的后缀就行,        String type = myfile.getOriginalFilename().substring(myfile.getOriginalFilename().lastIndexOf("."));

    @PostMapping("/upLoadImg")
    @ResponseBody
    public String doRemoteUpload(MultipartFile myfile){

        String path = "http://{ip地址(如:127.0.0.1)}:8080/uploadfiles/";

//为上传到服务器的文件取名,使用UUID防止文件名重复
//        String filename= UUID.randomUUID().toString()+"-"+myfile.getOriginalFilename();
        String type = myfile.getOriginalFilename().substring(myfile.getOriginalFilename().lastIndexOf("."));
        String filename= UUID.randomUUID().toString()+type;
        try{
//使用Jersey客户端上传文件
            Client client = Client.create();
            WebResource webResource = client.resource(path +"/" + URLEncoder.encode(filename,"utf-8"));
            webResource.put(myfile.getBytes());
            System.out.println("上传成功");
            System.out.println("图片路径==》"+path+filename);
        }catch(Exception ex){
            System.out.println("上传失败");
        }
        return "随便写点,关键是看后台上传成功了吗";
    }

 三、使用PostMan测试文件上传

1、

2、

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我认不到你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值