1)使用类MultipartFile上传;
2)将图片文件路径位置写入properties文件中以便扩展;
3)检验文件类型是否为图片——获取用户上传的文件名,使用正则检测后缀;
4)防止恶意文件上传——将文件交给工具API(ImageIO.read( ))从中获取宽高进行校验;
5)保存众多图片——使用日期格式创建文件夹保存数据,实现图片分文件存储;
6)解决文件重名问题——自定义UUID为文件名称。UUID为32位的16进制,共2^128次;
7) 使用transferTo(文件)实现文件上传;
8)编辑虚拟路径数据返回。
由于上传文件若保存到本地具体磁盘空间中,只能允许自己通过物理磁盘路径进行访问,为了让全部用户都能正常访问,所以必须准备一个虚拟的网络路径,使用户能通过虚拟路径正常访问真实路径。
虚拟路径——真实磁盘路径
使用nginx反向代理实现。用户发起正常的url请求,代替用户去请求真实资源的过程。
1)在图片的properties文件中添加URL路径,并将该虚拟路径在用户上传完成后返回给用户;
2)在nginx的配置文件中,将service中的路径配置好,在真实路径下配置代理路径;
Nginx介绍
Nginx是由俄罗斯人使用C语言负责开发的.是一个轻量级(内核小.占用内存少2M),并发能力强(3-5万/秒)的web服务器/反向代理服务器/电子邮件服务器。
nginx只能启动一次,不能多次启动。若启动多次则前面的启动将被破坏,但是每次更改配置文件后,必须使用命令重启。
Nginx常用命令
启动:start nginx
关闭:nginx -s stop
重启:nginx -s reload
Nginx配置
每个server就是一个服务,listen表示监听端口,sever_name表示监听域名,location是具体反向代理的配置信息,root关键字代表文件夹,当域名没购买时,我们可通过修改hosts文件实现域名与IP的映射关系。
Nginx实现域名代理
用户访问具体网址时其实是在访问具体的Tomcat服务器,需要标识端口,这时需要使用nginx反向代理技术。
Nginx实现负载均衡
1)准备多台服务器,修改yml文件端口,然后打包项目。
2)启动多台服务器,将打包的项目部署到第三方Tomcat服务器中,直接启动war包程序,运行服务。
命令:java -jar xxx.jar/war 适用于springboot程序,Ctrl+c表示结束。
Nginx负载均衡策略
1)轮询策略:根据配置文件顺序,依次访问tomcat服务器。
2)权重策略:根据物理服务器配置,让高性能服务器尽可能多分配请求。
3)IPHash策略:使用IPhash可以将用户与服务器绑定。(该策略基本不用,因为只要服务器宕机,则部分用户就不能再访问了,会造成严重的负载不均现象)。
Nginx运维配置
down
标识故障机,nginx遇到down标识的服务器,则永远不会再去访问该机器。
backup
.正常情况下该机器不参与用户的访问.留作备用.当服务器全部宕机或者主服务器遇忙时再用。
健康检查、心跳检测
nginx健康监测是为了在没有程序员表示down属性时,引起频繁访问故障机的情况.当服务器宕机.只需要影响用户2秒之后,在指定的周期中不会再次访问故障机.提升用户体验。