2011-10-10 86 views
0

我有一个系统,用户可以通过该系统通过FTP服务器或通过html表单上传CSV文件。在我的结尾,脚本轮询上传目录并处理找到的新文件。一些用户将通过从Excel中导出来创建CSV,而其他用户则可以用自己的脚本以编程方式创建它。如何验证上传文件是否完整

我目前的担忧是:我如何100%确定我的处理脚本所作用的文件是完整的 - 换句话说,它不是一个部分文件(正在进行,上传失败等)?

如果文件格式是更结构化的东西,比如XML,通过检查XML结构是否有效(即:关闭标签),我会100%确信文件已完成。

有一个很好的方式,以确保上传CSV文件是完整的,不负担&迷惑少技术用户谁是简单地上传从电子表格程序导出的文件(即:提供的文件内容的MD5会超越他们)。

回答

1

设计在过去的CSV文件格式时,我总是添加页眉和页脚行,如下所示:

id,one,two,three,four,five,six 
10,1,2,3,4,5,6 
11,1,2,3,4,5,6 
12,1,2,3,4,5,6 
13,1,2,3,4,5,6 
14,1,2,3,4,5,6 
FOOTER,5 

大多数CSV文件格式有一个头标记列,页脚的目的是指示文件已完成。页脚包含简单的行数,在循环浏览文件内容时很容易审计。用户不太复杂。

+0

我认为这可能是最好的方法,对最终用户来说相当简单。 – rcourtna

0

只要上传文件的文件大小与原始文件的文件大小相匹配,就可以进行交叉检查。

+0

这对于通过html + php表单上传的文件来说可能有点简单,因为我可以访问原始文件属性。但是,我不知道如何通过FTP上传文件来做到这一点。 – rcourtna

+0

是的。您应该能够在上传初始化时将服务器保存信息(可能是数据库)(filename,id,filesize)当您的endcript验证并转换时,使其从数据库中获取详细信息并根据文件检查以进行验证。 –