当我通过 HTTP 或 FTP 上传文件到服务器时,我通常会再次下载它们,只是为了检查它们是否已成功上传(我使用 md5 校验和来检查)。
这有必要吗?如果用于上传文件的软件(例如使用 SkyDrive 或类似服务时的浏览器,或使用 FTP 时的 FTPZilla 等)没有给出任何错误,我可以确定通过 HTTP 或 FTP 上传文件是成功的吗?
哦,我知道同步,无需建议。这适用于 rsync 不适用的情况。
答案1
数据包是否按发送时实际到达通常由底层协议(在本例中为 TCP)决定是否成功。通常这足以假设成功,因为大多数文件传输协议都使用它来确定网络级别是否发生了任何数据损坏。
我假设您的意思是整个文件,在这种情况下,校验和是验证上传数据的最佳方法。
但是,您无需再次下载它们来验证它们,您可以在服务器本身上执行校验和。具体来说,对于 FTP,有一些解决方案可以在上传过程中执行文件校验和,例如,带有 zipscript 插件的 drftpd 使用 .sfv 文件在目录级别检查上传的文件。