SpringBoot怎么获取到上传到Linux服务器(非项目内)的图片

简介: SpringBoot怎么获取到上传到Linux服务器(非项目内)的图片

问题介绍:


到我们把SpringBoot项目打包到Linux服务器上,文件的上传和上传的文件的下载路径及其获取就是一个比较棘手的问题。通俗一点就是解决像下面demo.jar中访问到110.png图片的文件,比如在页面显示啊


(图片很重要,图片很重要,图片很重要)


5.png


解决问题思路:


如果你用过kaptcha验证码插件,那你就应该猜到我的思路了,用流的方式请求URL返回到前端,而不能用  


/abc/1123.jpg


这种方式


Demo介绍(路径见上图)


demo代码下载


在有图片上传的html上,将图片上传到上图中的位置,并且将图片的名称存到session中


访问success跳转到success.html中,其实success.html中有一个像请求验证码图片一样但是处理你上传图片的url


index.html


上传图片表单


<h1>图片上传</h1>
<form action="upload" method="post"  enctype="multipart/form-data">
<input  type="file"  name="file"/><input type="submit" value="submit">
</form>


上传图片的Contoller


将图片存到上面图片的位置中,没什么好解释的


@RequestMapping("/upload")
  @ResponseBody
  public String upload(MultipartFile file,HttpSession session) throws Exception {
    // 打印文件的名称
    System.out.println("FileName:" + file.getOriginalFilename());
    //将名字存到session中
    session.setAttribute("photoName", file.getOriginalFilename());
    // 确定上传文件的位置
    // 本地路径,测试确实能通过
    // String path = "E:/temp/temp";
    // Linux系统
    String path = "/usr/CBeann/temp";
    // 获取上传的位置(存放图片的文件夹),如果不存在,创建文件夹
    File fileParent = new File(path);
    if (!fileParent.exists()) {
      fileParent.mkdirs();
    }
    File newFile = new File(path + "/", file.getOriginalFilename());
    // 如果不存在,创建一个副本
    if (!newFile.exists()) {
      newFile.createNewFile();
    }
    // 将io上传到副本中
    file.transferTo(newFile);
    return "上传成功";
  }


跳转及其success.html


注意:success中img的src为一个controller中的url,而不是绝对或者相对路径,类似验证码插件url的意思

//跳转到success.html页面
  @RequestMapping("/success")
  public String successHtml(){  
    return "success"; 
  }


<body>
---------
<img alt="demo" src="showimage"/>
---------------
</body>


将图片以流的方式传到前端显示


获得Linux服务上的图片文件的file,然后以流的方式写入response中,我这用的是session或者上传图片的值

@RequestMapping("/showimage")
  public String showphoto(HttpServletRequest request, HttpServletResponse response, HttpSession session)
      throws Exception {
    response.setDateHeader("Expires", 0);
    response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    response.addHeader("Cache-Control", "post-check=0, pre-check=0");
    response.setHeader("Pragma", "no-cache");
    response.setContentType("image/jpeg");
    // 获得的系统的根目录
    File fileParent = new File(File.separator);
    String photoName = (String) session.getAttribute("photoName");
    // 获得/usr/CBeann目录
    File file = new File(fileParent, "usr/CBeann/temp/" + photoName);
    BufferedImage bi = ImageIO.read(new FileInputStream(file));
    ServletOutputStream out = response.getOutputStream();
    ImageIO.write(bi, "jpg", out);
    try {
      out.flush();
    } finally {
      out.close();
    }
    return null;
  }
目录
相关文章
|
19天前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
27天前
|
监控 IDE Java
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
46 8
|
29天前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
35 4
|
1月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
59 4
|
1月前
|
运维 监控 安全
盘点Linux服务器运维管理面板
随着云计算和大数据技术的迅猛发展,Linux服务器在运维管理中扮演着越来越重要的角色。传统的Linux服务器管理方式已经无法满足现代企业的需求,因此,高效、安全、易用的运维管理面板应运而生。
|
2月前
|
监控 Linux Shell
|
1月前
|
运维 监控 Linux
服务器管理面板大盘点: 8款开源面板助你轻松管理Linux服务器
在数字化时代,服务器作为数据存储和计算的核心设备,其管理效率与安全性直接关系到业务的稳定性和可持续发展。随着技术的不断进步,开源社区涌现出众多服务器管理面板,这些工具以其强大的功能、灵活的配置和友好的用户界面,极大地简化了Linux服务器的管理工作。本文将详细介绍8款开源的服务器管理面板,包括Websoft9、宝塔、cPanel、1Panel等,旨在帮助运维人员更好地选择和使用这些工具,提升服务器管理效率。
|
2月前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
64 5
Linux系统之安装Ward服务器监控工具
|
17天前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。
|
1月前
|
缓存 Unix Linux
服务器linux!!!
本文介绍了计算机的演变历史、硬件基础知识及服务器相关知识。从电子管时代的ENIAC到冯-诺伊曼架构,再到现代计算机系统组成,详细讲解了计算机的发展历程。此外,文章还介绍了服务器的分类、品牌、硬件组成以及IDC机房的上架流程,为读者提供了全面的技术背景知识。
49 0
服务器linux!!!