springboot项目访问图片(4种方法亲测可用)

这篇具有很好参考价值的文章主要介绍了springboot项目访问图片(4种方法亲测可用)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

第一章 编写配置类实现WebMvcConfigurer接口映射访问

第二章 通过Nginx反向代理映射访问文件

第三章 通过七牛云OSS访问图片

第四章 通过Minio文件存储器访问图片(自己搭建OSS文件存储)


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、编写配置类实现WebMvcConfigurer接口映射文件路径
  • 二、Nginx反向代理映射访问文件
    • 目录

      目录

      文章目录

      前言

      一、配置类实现WebMvcConfigurer

      二、使用步骤

      1.编写配置类

      2.读入数据

      二、Nginx反向代理实现

      2.1:安装nginx,傻瓜式安装,点击下一步下一步,记住你的安装目录就行。

      前端代码:

      实现效果:

      三: 通过七牛云OSS访问图片

              service接口代码

              service实现类代码

      开始测试图片上传

      测试通过,图片上传成功,

      ​编辑

      msg返回了一段地址。平时我们在做图片上传时。就可以调用这个接口.然后将这段数据存入数据库。

      ​编辑

      前端图片展示部分代码:

      就可以直接访问了

      ​编辑

    1. 四、Minio文件存储器访问图片(自己搭建OSS文件存储)

      总结
    • 七牛云OSS访问图片
  • 四、Minio文件存储器访问图片(自己搭建OSS文件存储)
    • 1.引入库
    • 2.读入数据
  • 总结

前言

主要介绍通过springboot项目访问除项目根目录之外的其它目录的图片。


一、配置类实现WebMvcConfigurer

WebMvcConfigurer是spring内部提供的一种配置接口,代替了传统的xml配置文件形式,

二、使用步骤

1.编写配置类

代码如下(示例):

java后端配置类代码:

@Configuration
public class ResourcesConfig implements WebMvcConfigurer
{
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry)
    {
        /** 通过url访问项目外的目录图片*/
        registry.addResourceHandler("/cert/**").addResourceLocations("file:/D:/Download/img/");
    }

}

代码截屏

springboot配置图片访问路径,spring boot,后端,java

2.读入数据

代码片段: 

<img src="/cert/4.jpg" style="width: 1in; height: 1in;">
<img src="/cert/1.jpg"  style="width: 1in; height: 1in;">

截屏

springboot配置图片访问路径,spring boot,后端,java

springboot配置图片访问路径,spring boot,后端,java

因为demo是在若依框架的基础上实现的所以自定义函数就没有贴上来,因为每个人的需求不一样,此处主要是实现通过方法实现对项目根路径之外的图片访问,效果是都能实现的
springboot配置图片访问路径,spring boot,后端,java


到这里想必 大家已经知道了,就是通过配置使自定义的“cert/**”代替了指定的盘符路径。进阶思考一下,我们的想通过动态数据访问动态图片(用户头像,每个用户都有自己独一无二的图片),那么我们只需要将图片路径存储在数据库中即可,通过id或其它字段将用户头像的存储路径与用户进行绑定,不需要存储图片文件本身。
数据库存储的数据(ps:不推荐这样存储叫什么1,2,3之类的名称,我这里是为了快速达到目的,因为涉及到上传文件。应该在那里的图片名称应该是日期+UUID随机数组成,后面也会更新)

springboot配置图片访问路径,spring boot,后端,java

 springboot配置图片访问路径,spring boot,后端,java

代码片段:

<img src="/cert/' + 后端传过来遍历的数据集.图片路径对应的实体属性 + '" style="width: 1in; height: 1in;">
<img src="/cert/' + row.certAddress2 + '" style="width: 1in; height: 1in;">

 实现效果:
springboot配置图片访问路径,spring boot,后端,java

二、Nginx反向代理实现

2.1:安装nginx,傻瓜式安装,点击下一步下一步,记住你的安装目录就行。

配置nginx配置文件,我的安装在D盘,

springboot配置图片访问路径,spring boot,后端,java

 编辑nginx.conf
springboot配置图片访问路径,spring boot,后端,java

 找到server{那一行,箭头1:是配置监听端口,我这里设置的是8090;箭头2:是配置域名(就是类似一www.baidu.com,www.12306.com等等这就叫域名),我这里是本地ip没法绑定域名就设置ip代替了

 !!!箭头3这里就是最重要的一步映射文件路径了配置的代码我贴下面了

配置文件片段:  

        listen       8090;
        server_name  192.168.61.1;

        location / {       
            root   html;
            index  index.html index.htm;  
        }

        location /File/ {           
            root   D:\Download\img;       
            rewrite ^/File/(.*)$ /$1 break;   
        }
前端代码:
                    {
                        field: 'certAddress1',
                        title: '证件正面',
                        formatter: function(value, row, index) {
                            return '<img src="http://192.168.61.1:8090/File/' + row.certAddress1 + '" style="width: 1in; height: 1in;">';
                        }
                    },
                    {
                        field: 'certAddress2',
                        title: '证件背面',
                        formatter: function(value, row, index) {
                            return '<img src="http://192.168.61.1:8090/File/' + row.certAddress2 + '" style="width: 1in; height: 1in;">';
                        }
                    },
实现效果:

springboot配置图片访问路径,spring boot,后端,java

说明:通过nginx反向代理的路径不需要写在方法一的配置类中(因为我们在nginx的配置文件中写好了),写了也没关系,这几种方式都是互不影响的

三: 通过七牛云OSS访问图片

1注册七牛云:注册成功后点击对象存储

springboot配置图片访问路径,spring boot,后端,java

springboot配置图片访问路径,spring boot,后端,java

3:新建存储空间。地址随便选

springboot配置图片访问路径,spring boot,后端,java

4:获取外链域名(注意这个域名是七牛云提供的临时域名,有效期只有30天)。到期后就重新创建新的存储空间,又会有新的外链域名。这个是免费的就不要要求那么多了

springboot配置图片访问路径,spring boot,后端,java

5:点击“个人中心”—>“密钥管理”获取你的AK,SK

springboot配置图片访问路径,spring boot,后端,java

到目前为止。七牛云的存储服务空间就完全搭建好了。对于使用七牛云文件存储器现在只需要用到我们上面提到的3个东西。

1:空间名称、2:外链域名、3:密钥AK、SK。

测试文件上传,然后查看图片

controller代码

@RestController
public class UploadController {

    @Resource
    private IUploadOssService uploadService;

    @PostMapping("/oss/upload")
    public AjaxResult uploadImgOss(@RequestParam("file")MultipartFile file) throws InvalidExtensionException {
       return uploadService.uploadImg(file);
    }
}

service接口代码

public interface IUploadOssService {
    AjaxResult uploadImg(MultipartFile img) throws InvalidExtensionException;
}

service实现类代码

@Service
@Data
@ConfigurationProperties(prefix = "oss")
public class UploadOssServiceImpl implements IUploadOssService {
    @Override
    public AjaxResult uploadImg(MultipartFile img) throws InvalidExtensionException {
        if (!Objects.requireNonNull(img.getOriginalFilename()).isEmpty()) {
            //判断文件类型
            //获取原始文件名
            String originalFilename = img.getOriginalFilename();
            //对原始文件名进行判断
            if (!originalFilename.endsWith(".png") && !originalFilename.endsWith(".jpg")) {
                String[] allowedExtension = {".png", ".jpg"};
                throw new InvalidExtensionException(allowedExtension, lastName(originalFilename), originalFilename);
            }
            //如果判断通过上传文件到OSS
            String filePath = PathUtils.generateFilePath(originalFilename);
            String url = uploadOss(img, filePath);
            return AjaxResult.success(url);
        }
        return AjaxResult.error("上传文件为空");
    }
        // 获取文件后缀名
    private String lastName(String fileName){
            if(fileName.lastIndexOf(".")==-1){
                return "";//文件没有后缀名的情况
            }
            //此时返回的是带有 . 的后缀名
            return fileName.substring(fileName.lastIndexOf("."));
        }

    private String accessKey;
    private String secretKey;
    private String bucket;


    private String uploadOss(MultipartFile imgFile, String filePath){
        //构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(Region.autoRegion());
        //...其他参数参考类注释
        UploadManager uploadManager = new UploadManager(cfg);
        //默认不指定key的情况下,以文件内容的hash值作为文件名
        String key = filePath;
        try {
            InputStream inputStream = imgFile.getInputStream();
            Auth auth = Auth.create(accessKey, secretKey);
            String upToken = auth.uploadToken(bucket);
            try {
                Response response = uploadManager.put(inputStream,key,upToken,null, null);
                //解析上传成功的结果
                DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
                System.out.println(putRet.key);
                System.out.println(putRet.hash);
                //下面这个七牛云cnd临时域名有效期只有一个月,失效后需要去七牛云复制新生成的
                return "你的七牛云外链域名"+key;
            } catch (QiniuException ex) {
                Response r = ex.response;
                System.err.println(r.toString());
                try {
                    System.err.println(r.bodyString());
                } catch (QiniuException ex2) {
                    //ignore
                }
            }
        } catch (Exception ex) {
            //ignore
        }
        return "www";
    }
}
开始测试图片上传

springboot配置图片访问路径,spring boot,后端,java

测试通过,图片上传成功,
springboot配置图片访问路径,spring boot,后端,java
msg返回了一段地址。平时我们在做图片上传时。就可以调用这个接口.然后将这段数据存入数据库。
springboot配置图片访问路径,spring boot,后端,java
前端图片展示部分代码:
 <el-table v-loading="loading" :data="movieList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center"/>
      <el-table-column label="主键" v-if="false" align="center" prop="mId"/>
      <el-table-column label="电影名" align="center" prop="mName"/>
      <el-table-column label="封面" align="center" prop="mImg">
      <template slot-scope="scope">
        <img :src="'http://'+scope.row.mImg" alt="" :width="90" :height="120">
      </template>
      </el-table-column>
      <el-table-column label="电影栏目" align="center" prop="cId"/>
      <el-table-column label="类型" :show-overflow-tooltip="true" align="center" prop="mClass"/>
      <el-table-column label="简介" :show-overflow-tooltip="true" align="center" prop="mInfo"/>
      <el-table-column label="时长" align="center" prop="mDuration"/>
      <el-table-column label="地区" align="center" prop="mAddr"/>
      <el-table-column label="评分" align="center" prop="mScore"/>
      <el-table-column label="上映年份" align="center" prop="mYear" width="180">
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.mYear, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleUpdate(scope.row)"
            v-hasPermi="['appmovie:movie:edit']"
          >修改
          </el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['appmovie:movie:remove']"
          >删除
          </el-button>
        </template>
      </el-table-column>
    </el-table>

就可以直接访问了

springboot配置图片访问路径,spring boot,后端,java

四、Minio文件存储器访问图片(自己搭建OSS文件存储)

首先是安装minio,我是在linux虚拟机中安装的(为了模仿真实的服务器环境),需要一步到位的可以下载并安装window/mac版本,minio官网,以下只适用于linux系统安装

进入linux服务器创建文件夹
mkdir minio
进入创建的文件夹
cd /minio
在线下载安装包
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
创建minio的log文件
touch minio.log
赋予minio文件高级权限
chmod 777 minio
启动minio
./minio server /minio/data (/minio/data 为你存放文件的目录)
控制台提示密码过于简单;设置你的账号密码(账号:admin 密码:password)
vim /etc/profile
添加以下代码
# set minio environment
export MINIO_ROOT_USER=你的用户名admin
export MINIO_ROOT_PASSWORD=你的密码admin
保存退出;
esc+:wq!
重载配置文件
source /etc/profile

后台启动minio

nohup /minio/minio server  /minio/data --console-address ":62222" > /minio/minio.log 2>&1 &

('2>&1’表示现在标准输出直接输入到/opt/minio/minio.log 中,而2>&1是将标准错误重定向到标准输出,‘nohup’和末尾’&'组合使用表示脱离终端后继续执行)

minio文件上传以及预览代码正在整理中!!!持续更新文章来源地址https://www.toymoban.com/news/detail-738002.html

总结

到了这里,关于springboot项目访问图片(4种方法亲测可用)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PVE配置GPU显卡直通(亲测可用)

    1.进入网址 2.输入用户名密码 3.点击local上传镜像 4.进入命令行模式 shell 5.换源 保存并替换如下内容: 保存并退出,输入以下命令 用以下内容替换原代码并保存退出 更新源文件 6.配置显卡直通 其中一行是GRUB_CMDLINE_LINUX_DEFAULT=\\\"quiet“,修改这一行为如下内容,保存并退出 使用

    2024年02月12日
    浏览(28)
  • PyCharm配置Opencv(多人亲测可用)

    之前由于只安装opencv-python-contrib这个包,导致Opencv版本过高,有些算法无法使用, 所以这里更新安装opencv-contrib-python这个包,具体如下配置。 ——————————————————————————————————————————— Plan A: 可以直接在pycharm中配置(

    2024年02月16日
    浏览(30)
  • 五种css溢出隐藏的方法----亲测可用

    CSS中的文本溢出和多行省略是在布局设计中经常会遇到的问题。本文将介绍CSS的文本溢出和多行省略的实现方法。 目录 一、文本溢出 1.1、单行文本溢出省略: 1.2、多行文本溢出省略: 二、多行省略 2.1、使用纯文本实现 2.2、使用伪元素实现 总结 当容器中的文本内容超出容

    2024年02月09日
    浏览(30)
  • springboot引入第三方jar包本地lib并打包 亲测可用

    一、在项目根目录创建lib目录并放入第三方lib包 : 二、pom中引入第三方lib system表示依赖不是由maven仓库,而是本地的jar包 ${pom.basedir}/lib/commons-io-2.6.jar指向jar包位置即可 ${pom.basedir}表示项目根目录 三、将第三方lib也打入jar包

    2024年01月25日
    浏览(39)
  • linux安装nginx,配置系统文件,配置systemctl命令,亲测可用,

    先安装gcc-c++编译器 安装pcre包 安装zlib包 在/usr/local/创建nginx文件 进入nginx目录 下载nginx安装包 注:如果没有wget命令,就安装命令 解压安装包 执行以下三个命令 添加到系统服务中 最后加入配置 重载配置 添加systemctl命令 添加内容 重新加载系统服务 启动服务 停止服务 重启

    2024年02月02日
    浏览(49)
  • nginx打印请求头日志方法亲测可用(openresty)

    之前想用nginx打印收到的请求的请求头,但是只找到打印请求体的,没有打印请求头的,感觉原版nginx不支持。 建议如果想打印请求头,先换成openresty (本人安装的是openresty-1.21.4.1.tar.gz版本的) 网上有些文章的配置,本人试了后发现不行,各种报错,不知道为什么; 这个的配

    2024年02月04日
    浏览(27)
  • 手把手教你通过 Docker 部署前后端分离项目(亲测可用)

    安装Docker 安装Nginx 安装Mysql 部署SpringBoot项目 部署Vue项目 一、安装Docker 1、安装: 2、启动/停止/重启docker服务 3、查看docker版本信息 4、运行helloword,因为不存在此镜像,docker会自动下载运行本镜像 5、查看所有docker镜像 二、安装Nginx 1、拉取Nginx镜像文件 2、查看下载好的镜像

    2023年04月24日
    浏览(39)
  • win10系统解决office软件图标是白色的方法(亲测可用)

    公司办公电脑使用win10图标,最近发现office的图标包含word,ppt,excel的图标都是白色的了,但是也正常使用,就是看着不好看,查了网上的一些资料也没有,综合网上的一些资料,整理了一个方法,亲自测试了以下,正常可用(注意里面的细节). 首先我使用的是2016版,如果其他的版本可以参考

    2024年02月06日
    浏览(38)
  • 亲测可用-jetson nano b01上配置cuda加速的opencv

    前面的文章已经写过如何安装镜像及基础配置 亲测可用-jetson nano B01镜像安装及配置 jetson nano的官方镜像中自带opencv,但是不支持显卡加速 输入命令 按下数字7查看INFO界面,可以看到 所以默认自带的是不支持cuda加速(GPU)的,没有办法充分发挥jetson上GPU的性能 卸载自带的op

    2024年02月03日
    浏览(35)
  • STM32CUBUMX配置RS485 modbus STM32(从机)亲测可用

    ———————————————————————————————————— ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子,使用STM32CUBEMX做了很多驱动,包括ADC、UART、RS485、EEPROM(IIC)、FLASH(SPI)、mod

    2024年02月14日
    浏览(186)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包