网站首页 > 技术教程 正文
今天是刘小爱自学Java的第148天。
感谢你的观看,谢谢你。
学习计划安排如下:
- 昨天写了新增品牌业务,其中有一个参数是图片,我们并未上传图片。
- 今天主要就是完成图片上传功能。
- 因为上传不仅有图片的上传,还可能是其它上传,为了其通用性,创建一个独立的微服务。
一、创建upload微服务
关于微服务的创建,有核心三个步骤:引入依赖、配置文件和启动类编写。
主要说下配置文件中的注意点。
上传微服务对应的端口号:8082。
微服务名称为:upload-service
既然是上传图片,那么要设定上传的大小,不能让任意大小的图片都能上传。
- max-file-size:限定上传的文件大小,例子中就是一个文件大小不能超过5M。
- max-request-size:限定请求数据大小,例子中也就是一次请求最多传10M。
其它的配置比如eureka注册不再赘述。
至于依赖,需要什么在pom文件中引入即可,启动类编写也很简单,以前写过很多遍了。
关于请求
昨天在分析前端页面的时候就说明过:
①请求路径/方式
全路径即为上图中对应的url,为网关映射路径+真实路径,真实路径即为image。
请求方式为POST请求。
②请求参数
关于参数即为文件file,至于其返回值为一个字符串,即图片文件对应的url。
③网关配置映射路径
upload映射路径即对应着upload微服务。
也就是说当浏览器上的访问网关该映射路径时,其实本质上执行的是upload微服务。
二、后台代码编写
因为本身并未对数据库进行操作,所以并没有涉及到Mapper层的代码编写。
1Controller层
无外乎还是这4个内容:
- 请求路径:真实路径image,上面分析过。
- 请求方式:POST请求。
- 请求参数:文件file,这里被封装成了MultipleFile,在学SpringMVC时讲过。
- 返回值:图片对应的url字符串。
2Service层
既然是图片文件,我们首先要校验其类型,不能是文本文件视频文件;再对图片内容校验。
①图片类型校验
MultipartFile有一个getContentType方法,通过它可以获取上传图片的类型。
我们将图片的类型存放在一个集合中,再将集合和上传图片类型比较即可。
比如png文件,jpg文件都是常见的图片文件类型,还有bmp文件,上述忘记说明了。
②图片内容校验
我们是将图片存储在nginx中的,创建一个file文件说明对应的html文件夹路径即可。
如果是以前我们需要通过IO流复制该文件,完成图片的上传与保存。
而MultipartFile提供了transferTo()方法可以直接完成文件的复制,根据语义也好理解。
③返回图片url
返回一个url,即图片的域名+图片名,关于图片名还可以使用UUID保证名称的唯一性。
PS:为什么图片地址要使用独立的url?
如果是保存在服务器内部,会产生额外的负担,这样显然是不合适的。
如果不使用独立的域名,在访问静态资源时会携带不必要的cookie加大请求的数据量。
所以要使用独立的域名,既然如此那我们要配置图片对应的域名。
三、图片域名及测试
既然返回值中说明了域名,同样的道理,SwitchHosts和nginx完成域名的使用。
这个我们在nginx中专门讲解过反向代理,即第142天的学习笔记。
总之通过它能达到一个什么目的呢?
在浏览器上输入图片对应的全路径,会访问到nginx中html里的文件。
当然再次做一个强调:
该配置只是好看,知道有域名这回事,因为域名需要去买很麻烦,所以只好这么配置。
域名配置完成,代码也编写完毕,做个测试:
利用insomnia来模拟上传图片:
向upload微服务发送请求,服务器接受该请求,将上传的图片保存到了nginx中。
响应状态码是200即表示成功。
我们到对应的html文件夹中可以看到保存的图片,其中因为配置了域名,所以在浏览器上直接用域名也可以访问到图片。
最后
行有不得反求诸己,我是@刘小爱
一个白天上班晚上学习的95后沪漂,不为其它,只为学会自律做好自己,也愿我的每日打卡能给你带来勇气,欢迎点赞关注和评论。
猜你喜欢
- 2024-10-12 Nginx的入门介绍(nginx入门教程)
- 2024-10-12 Nginx的参数调优(nginx 调试)
- 2024-10-12 Nginx大文件传输配置(nginx 文件大小限制)
- 2024-09-22 nginx——限制上传文件的大小(nginx 文件限制)
- 2024-09-22 Nginx中非常有意义的配置TOP4(nginx安装与配置详解windows)
- 2024-09-22 nginx 开启高效文件传输模式(nginx传输大文件)
- 2024-09-22 nginx + fastDFS-单机图片服务器解决方案
- 2024-09-22 Apache Server搭建图片服务器(linux图片服务器搭建)
- 2024-09-22 分布式图片服务器搭建(分布式服务器架构图)
- 2024-09-22 写给小白的 Nginx 文章(写给小白的一封信)
你 发表评论:
欢迎- 最近发表
-
- Win10 TH2正式版官方ESD映像转换ISO镜像方法详解
- 使用iso镜像升级到Windows 10的步骤
- macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像
- 安利一个用ISO镜像文件制作引导U盘的的小工具RUFUS
- CentOS 7使用ISO镜像配置本地yum源
- 用于x86平台的安卓9.0 ISO镜像发布下载:通吃I/A/N、完全免费
- AlmaLinux 9.6发布:升级工具、初步支持IBM Power虚拟化技术
- Rufus写入工具简洁介绍与教程(写入模式)
- 新硬件也能安装使用了,Edge版Linux Mint 21.3镜像发布
- 开源工程师:Ubuntu应该抛弃32位ISO镜像
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)