若linux用到了容器,所有请求都需要通过一个代理ip进行请求转发(防火墙作用),服务器内部调用的话应该是调用的容器自身的IP。我们调用的只能是服务器的ip。因此代码发送的请求中,若某个参数给的是服务器的地址对应的路径,在容器内部是找不到文件的。
windows中同一路径下能找到文件,linux中找不到文件的原因还可能是:
1、如果访问的项目文件是这样的:abc/bcd/aa.jpg
,而系统中访问文件的路径是:abc/Bcd/aa.jpg
,两者的区别是二级目录bcd
写成了Bcd
。如果在windows下开发的小伙伴们,是发现不了错误的,windows文件名大小写不敏感,因此按照 abc/Bcd/aa.jpg
依然能访问到文件,但是linux文件目录大小写敏感,因此会找不到文件。
2、linux
目录分隔符是/
,windows下可能有\
,因此有时在windows存到数据库里的文件路径搬到linux下就会不适用,需要在系统中做处理,从数据库取出路径后,要经过加工。