使用PHP添加完整性检查到CSV文件



我必须生成大型的CSV文件,这些文件从数据库中导出数据,而原始数据的一些最小处理。

将文件下载给用户,用putCSV编写块。我的问题是下载可以在完成之前停止,并且用户不会注意到CSV如果被截断。

问题:是否有一种方法可以将完整性提示添加到CVSFile,以便用户可以检查文件是否包含所有数据应包含?

一种解决方案是在所有记录的最后一行计数中添加,客户应该检查一下,但似乎更像是hack

CSV规范不会为任何形式的文件完整性检查留出空间。因此,如果您希望这样做,以使CSV解析器会自动拾取,那么您将无法进行。问题的一部分是没有真正的CSV规范,在我的经验中,不同的解析器对CSV的含义有略有不同的定义。无论哪种方式,CSV"规范"中都没有内置的完整性检查,您可以期望任何CSV解析器会自动注意到。将一些内容添加到最后会让最终用户自己验证文件自己的机会,但是我再次怀疑任何人都会打扰检查。

一种可能的选项是将内容长度与文件一起发送。然后,当浏览器总数不符合预期的内容时,浏览器可能会检测到中断的下载。但是,那里的确切行为可能从浏览器到浏览器都不同,您必须运行一些测试才能查看是否实际上有帮助。

但是,这也要求您在手动之前知道文件的长度,这意味着将其全部构建在内存中,测量大小,然后将其倾倒到浏览器中。这本身有一些缺点,包括您受内存大小的限制(尽管您可以使用php://temp减轻它(。另外,下载不会在文件完全构建之前开始启动,并且根据用户认为下载被冻结的时间可能会导致更多取消。

一个完全不同的解决方案是将文件内容写入磁盘(在后台(,然后在构建文件时给用户发送下载链接。这样,他们就不会等待您的下载脚本,实际下载将只是一个简单的文件,直接由您的Web服务器管理,这将更快,更容易出现错误。

最新更新