以前的附件及文件下载有一些缺点,如文件重名、URL编码问题、暴露文件路径带来的安全问题等,尤其是以后SP对帐,需要通过Internet下载文件,安全问题及URL编码问题都必须解决
统一一下以后附件及文件下载的方法:
从应用的角度,数据库表采用三级结构保存附件及文件信息,第一级是Application_List表,至少包含一个唯一的编号字段,如草稿ID、通知ID等,第二级是附件表,记录该附件属于那一个ApplicationList,及该附件对应的文件编号,第三级才是真正的文件列表,该表包含一个以GUID为ID的唯一编号,以及文件的显示名和在服务器上的实际存放路径(二者的文件名称可以相同,也可以不同),示意图如下:
在上传附件时,如果已经有一个同名文件,保持文件的显示名不变,而修改其实际存放文件名(就像微软的Exchange一样,在文件名后加一个不重复的编号)
文件的下载通过一个Download.asp来完成,调用Download.asp时,将文件ID作为参数传入,该ASP从数据库中取得文件的显示名和实际存放路径并输出到客户端,如:
http://txd/Download.asp?FileID=A17ECDEA-756E-4203-93E6-FE50D887E96F
文件列表是一个相对独立的表,任何应用的附件都可以存放在这张表中,应用是通过附件列表来找到属于它的附件的
以上是针对附件文件的处理方式,对于移动的另外一类文件:FTP传过来的各类文件和省公司上报的报表文件,只需要在DTS中处理这些文件时向文件List表插入相应记录即可