| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> Java知识库 -> springboot下载网络图片到本地及Linux服务器(超详细) -> 正文阅读 |
|
|
[Java知识库]springboot下载网络图片到本地及Linux服务器(超详细) |
|
? ? 前言:最近做的一个项目中调用了萤石云的抓拍接口,该接口只返回了一个图片的url路径,我所需要做的是把萤石云服务器保存的图片下载下来保存到本地数据库,一开始是将图片转化为Base64格式保存到数据库,后来测试的时候发现这样效率不高,Base64是一个很庞大的字符串,仅仅存了几十张图片数据库的表都达到了20MB,另外前端页面展示的时候也有较高延迟。于是,现在要做的是将图片下载下来到本地或linux服务器,返给前端一个图片路径进行访问,提高效率,以下是博主本人在尝试该方式时遇到的一些坑,进行记录并分享给需要的猿友。 一、我先在本地做了个测试,将图片保存到项目路径下src/resources/static/images文件夹下
代码如下:
调用接口后我们可以发现图片确实保存到了本地,但是此时我们直接访问是没有办法访问到图片的,因为target编译目录的images里并没有生成该图片,我们必须重启项目才可以访问到图片,这肯定是不行的。我们可以用下面这个方法来获取编译目录下的路径
此时可以发先图片确实保存到了编译目录下,并且我们可以直接访问。但是,该方式仅限于本地测试写个小Demo来用,因为我们的项目终究是要打成jar包并运行在服务器上的,jar打包方式不支持将文件动态写入进去,这时需要通过映射的方式将文件上传到映射某一个文件夹,通过映射获取文件,并在页面显示。 二、springboot下载图片到linux服务器1、此时我在配置文件中写入了一个linux服务器上的一个文件夹地址用来保存图片 serverPath
?2、在请求拦截其中配置服务器图片映射
?3、这里跟保存到本地的代码一样,只不过路径用Linux服务器上的路径
?把红线部分的路径替换为服务器路径就可以了
4、到这里,我们可以运行项目并且测试一下看图片是否保存到Linux服务器并且能否访问到图片
? ?OK,测试后我已经激动的一批,看样子成功了,但是呢,当我去打开linux保存图片的文件夹,却发现下边空空如也???纳尼?我的图片没存上怎么能访问
?后来发现我们项目采用的是docker部署,图片保存到了dockers容器里的/workspace/images文件夹里, 不熟悉docker的小伙伴们可以自己去自学一下,docker容器里的文件我们必须做一个映射,把文件映射出来保存到宿主机里,不然docker容器重启的话里边存的文件就会丢失,下面是我在docker-compose-dev.yml文件中加入了一个配置,再次调用该接口,你就可以看到图片已经保存到linux服务器下的问/workspace/images里了
到这里其实可以结束了,但是呢前端要求返回的是图片全路径,这里要加上我们服务器的IP和端口号,并进行路径拼接
over!感谢观看 |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/29 21:46:05- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |