当前位置: 首页 > article >正文

SpringBoot+vue显示图片

前端:

后端请求路径:http://localhost/:8080/images

请求参数文件名:bw_platforms1700553054209.jpg

<img src="http://localhost:8080/images/bw_platforms1700553054209.jpg" alt="Image">

后端:

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;
import java.net.MalformedURLException;
import java.nio.file.Path;
import java.nio.file.Paths;

@RestController
@Validated
@RequiredArgsConstructor
@Slf4j
public class ImageController {
    @Value("${file.path}") //从yml配置文件中获取 可以直接赋值给filePath字符串
    private String filePath;  //图片路径 
    @GetMapping("/images/{filename}")
    public ResponseEntity<Resource> getImage(@PathVariable String filename) {
        System.out.println(filename);
        try {
            // 构建图片文件路径
            Path file = Paths.get(filePath).resolve(filename).normalize();
            // 创建资源对象
            Resource resource = new UrlResource(file.toUri());
            // 检查资源是否存在并且可读
            if (resource.exists() && resource.isReadable()) {
                // 返回图片响应
                return ResponseEntity.ok()
                    .contentType(MediaType.IMAGE_JPEG) // 根据实际图片类型设置MediaType
                    .body(resource);
            } else {
                return ResponseEntity.notFound().build();
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
            return ResponseEntity.notFound().build();
        }
    }
}


http://www.kler.cn/a/158727.html

相关文章:

  • 学习大数据DAY61 宽表加工
  • 【Nginx从入门到精通】03 、安装部署-让虚拟机可以联网
  • 基于多模板配准的心腔分割算法
  • vueRouter路由切换时实现页面子元素动画效果, 左右两侧滑入滑出效果
  • springboot基于Web足球青训俱乐部管理后台系统开发(代码+数据库+LW)
  • 基于python Django的boss直聘数据采集与分析预测系统,爬虫可以在线采集,实时动态显示爬取数据,预测基于技能匹配的预测模型
  • CPP-SCNUOJ-Problem P24. [算法课贪心] 跳跃游戏
  • 鱼香ROS一键安装命令(支持微信、docker、ros等)
  • SpringSecurity6 | 默认用户生成
  • 2023年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题(四)
  • GNN Maximum Flow Problem (From Shusen Wang)
  • 7+WGCNA+机器学习+实验+泛癌分析,多要素干湿结合
  • TCP 半连接队列和全连接队列
  • 区分(GIOU、DIOU、CIOU)(正则化、归一化、标准化)
  • 【小白推荐】安装OpenCV4.8 系统 Ubuntu 22.04LST Linux.
  • 第17章 匿名函数
  • 【PTA题目】6-1 猴子吃桃-递归 分数 10
  • 6.5 Windows驱动开发:内核枚举PspCidTable句柄表
  • 优化汽车产业用户营运:精细化策略
  • 使用C语言创建高性能网络爬虫IP池
  • 语义分割网络FCN
  • SQL Sever 基础知识 - 限制行数
  • NLP/Natural Language Processing
  • 春秋云镜ED01-CMS v20180505 存在任意文件上传漏洞
  • 【面试】Java最新面试题资深开发-JVM第一弹
  • 基于机器深度学习的交通标志目标识别