springboot上传图片后访问图片的几种方式

人生之路坎坎坷坷,跌跌撞撞在所难免。但是,不论跌了多少次,你都必须坚强勇敢地站起来。任何时候,无论你面临着生命的何等困惑抑或经受着多少挫折,无论道路多艰难,希望变得如何渺茫,请你不要绝望,再试一次,坚持到底,成功终将属于勇不言败的你。

导读:本篇文章讲解 springboot上传图片后访问图片的几种方式,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

springboot上传图片后访问图片的几种方式

  • 图片存储在本地磁盘,实现WebMvcConfigurer 接口添加本地静态资源访问过滤
  • 图片存储在本地磁盘,nginx动静分离
  • 分布式文件系统minio(对象存储 OSS )
  • 分布式文件系统FastDFS

方式一

所需依赖

 <dependency>
 	<groupId>org.springframework.boot</groupId>
 	<artifactId>spring-boot-starter-web</artifactId>
 </dependency>

yml设置上传文件限制

spring:
  # 上传文件总的最大值
  servlet:
    multipart:
      max-request-size: 10MB
      # 单个文件的最大值
      max-file-size: 5MB

简单上传文件代码

import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@RestController
public class TestController {

    @PostMapping("/upload")
    @ApiOperation(value = "上传文件")
    public String upload(@RequestParam("file") MultipartFile file) {
        // 文件名
        String fileName = file.getOriginalFilename();
        // // 保存图片的地址
        String filePath = "F:\\img\\";
        try {
            file.transferTo(new File(filePath + fileName));
            return "上传成功";
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "上传失败!";
    }

}

postman上传测试

在这里插入图片描述

图片上传至本地 F:\img\

在这里插入图片描述

添加本地静态资源访问过滤

@Configuration
public class HttpConverterConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //其中image表示访问的前缀。"file:F:/img/"是文件真实的存储路径
        registry.addResourceHandler("/image/**").addResourceLocations("file:F:/img/");
    }

}

访问本地图片成功

在这里插入图片描述
注意:文件名称带有中文的或者特殊字符的

方式一:拦截器配置:

	/**
     * 更改程序映射请求路径默认策略*/
    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        UrlPathHelper urlPathHelper=new UrlPathHelper();
        urlPathHelper.setUrlDecode(false);
        urlPathHelper.setDefaultEncoding(StandardCharsets.UTF_8.name());
        configurer.setUrlPathHelper(urlPathHelper);
    }
方式二:yml配置(推荐)
spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

方式二通过Nginx动静分离访问图片

链接: 在windows上安装Nginx参考.

简单动静分离配置

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #access_log  logs/access.log  main;

    sendfile        on;
	
	keepalive_timeout  65;

    #tcp_nopush     on;
	
	#是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量。
    gzip  on;
	
	#为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。
	gzip_disable "msie6";

	#upstream模块主要负责负载均衡的配置,通过默认的轮询调度方式来分发请求到后端服务器	
	upstream tomcatserver1 {
	   server localhost:8080;
	   #server localhost:8081;
	}

    server {
        listen       80;
        server_name  127.0.0.1;

        # 用于设置www/路径中配置的网页的默认编码格式
        charset       utf-8;
		# 静态资源地址
		location ~ \.(html|js|css|png|gif|img|jpg)$ {
            root   D:\img;
        }
		
        #反向代理代理服务器访问模式,通过proxy_set配置让客户端访问透明化
		location / {
		    proxy_pass    http://tomcatserver1;
		    proxy_set_header        Host            $host;
                    proxy_set_header        X-Real-IP       $remote_addr;
                    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                    client_max_body_size 10m; 
                    client_body_buffer_size 128k; 
                    proxy_connect_timeout 90; 
                    proxy_send_timeout 90; 
                    proxy_read_timeout 90; 
                    proxy_buffer_size 4k; 
                    proxy_buffers 4 32k; 
                    proxy_busy_buffers_size 64k; 
                    proxy_temp_file_write_size 64k;
		}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }


    }

}

访问后端接口

在这里插入图片描述

访问图片在这里插入图片描述

访问不到文件可能是配置静态资源过滤出错,注意文件格式

方式三通过minio(对象存储 OSS )访问图片

链接: springboot整合Minio(十一)-搭建自己的OSS(云存储服务).

方式四通过分布式图片服务器FastDFS访问图片(待续)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/133950.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!