问题描述
部分附件文件下载报错“文件下载发生错误,错误提示信息:无法连接到远程服务器”,如下图所示;
使用的本地文件服务预览方式,在线预览也报错;
分析处理过程
1、新上传的存储在文件服务器的附件,可以正常下载;
2、历史的存储在数据库的附件,也可以正常下载;
3、文件去操作下载的附件,在文件服务器的附件存储目录下是可以搜索到的;如下图所示;
4、查看文件服务器设置,有2个服务器IP,一个192的,是默认的;还有一个是172的地址;
查看云星空服务器的log文件,发现172这个文件服务器已连不上了;(日志忘记截图)
初步判断就是 之前上传在172这个文件服务器的附件,都无法下载了;
5、sql后台查询并处理;
之前后台查询文件服务器的相关信息之前,建议先学习:文件服务.表格介绍.附件信息表、文件信息表等相关表格介绍
①先整体查询下,文件服务器的IP地址和对应的FID、查询附件存储路径和对应FFILESERVERID;
--查文件服务器设置信息
select * from T_BAS_FileServerInfo
--查文件服务器存储路径信息
select * from T_BAS_FILESERVERDIRINFO
--查询文件信息表(通过界面上传或者标准上传接口上传任意图片或者附件时,都会自动生成一条文件信息)
select * from T_BAS_FileServerFileInfo
②然后从文件信息表查询结果里面,先随便找一个具体的FFILEID,先到前台看看这个附件,在前台操作看看下载和预览是否正常?
--关联查询,通过附件文件ID查询附件所在的单据类型和单据编号
select t1.FFILEID,t2.FATTACHMENTNAME,t2.FBILLTYPE,t2.FBILLNO
from T_BAS_FileServerFileInfo t1
join T_BAS_Attachment t2 on t1.FFILENAME=t2.FATTACHMENTNAME
where t1.FFILEID='cbfce774b61c4171b389e883bed2743a';
直到找到某一个,在前台操作下载和在线预览异常的FFILIEID;
如上图所示,查询到的这个文件所属的FFILESERVERID是823650,对应的文件服务器的IP就是172.16.0.110;
而当前默认的文件服务器的ID是799318对应的IP是192.168.0.14;
且关键是当前这个管理中心服务器连不上这个IP为172.16.0.110的文件服务器了,导致存储在这个文件服务器上的文件都无法正常下载和预览了。
③查询具体某一个前台有异常的FFILEID所属的存储目录和FFILESERVERDIRID、所属的文件服务器地址FFILESERVERID;
举例:
--查询某个文件的所属文件服务器ID和所属存储路径ID
select FFILESERVERID,FFILESERVERDIRID,* from T_BAS_FileServerFileInfo where FFILEID='0bd86edb49d24ee9a684a38afd6eafca'
如上图所示,所查询的这个文件所属的文件服务器FID是799318,所属的存储路径FFILESERVERDIRID是824368;
④然后对比 在前台操作正常的文件FFILED所对应的存储目录和FFILESERVERDIRID、所属的文件服务器地址FFILESERVERID;
注:所属的文件服务器FID(FFILESERVERID)对应的IP的文件服务器得是正常可访问到的(可通过文件服务器设置这里的【检测文件服务器是否可用】来判断);
所属的存储路径的FFILESERVERDIRID所对应的路径跟当前文件实际存储的磁盘路径要一致。
原因说明
部分附件无法下载无法预览的问题,一般是做过文件服务器迁移或者存储目录迁移但后台信息对不上导致;或者是部署了多个文件服务器但是其中某个文件服务器不可访问导致。
一般就是会发现当前云星空前台无法下载和预览的这些文件,
要么是这些文件的所属文件服务器不是当前可访问到的文件服务器IP,
要么就是后台记录的文件存储路径跟当前文件实际所存储的路径不一致导致的。
PS:修改语句 可参考如下补充资料的语句内容。
补充资料
1、相关查询和修改的参考语句
--查询文件服务器IP地址(相当于文件服务器设置界面的内容)
select * from t_bas_fileserverinfo
--查询文件服务器存储目录
select * from t_bas_fileserverdirinfo
--修改文件服务器存储目录
update T_Bas_FileServerDirInfo set FDIRPATH = 'E:\file' where FFILESERVERDIRID = 136918
--查询文件信息表中文件物理存放路径
select * from t_BAS_FileServerFileinfo
--修改文件信息表中文件物理存放路径
update T_BAS_FileServerFileinfo set FLOCATIONPATH = REPLACE(FLOCATIONPATH,'D:\file','E:\file')
2、测试环境示例,截图如下;
3、文件服务器迁移的相关资料参考
迁移文件服务器
~~~