上传对文件所做的更改(FTP)

时间:2011-10-11 11:06:11

标签: c# .net ftp

我正在制作某种FTP上传器客户端。我可以上传文件,但我不知道如何上传对文件所做的更改。我所说的更改并不是说该文件已重命名,而是当其内容发生变化时。例如,我有一个* .rar文件(足够大),里面有一些文件。当我添加一些新文件时,我不希望整个* .rar被上传,只需要更改的部分。我知道WebRequestMethods.Ftp.AppendFile但是它只附加在文件的末尾,如果在中间应用了哪些更改怎么办?我会得到一个垃圾文件...... 我读过关于“二元差异”的文章。看到有几个客户端直接在服务器上进行更改(FileZilla,Direct FTP,ALFTP)

1 个答案:

答案 0 :(得分:1)

实际上,如果您的rar存档中的文件已更改 - 您应该重建并重新上传整个存档。

FTP共享不保存更改或重命名文件的历史记录。所以,唯一的解决方案是:

  1. 在客户端应用程序中以某种xml格式保存文件列表。
  2. 从ftp检索文件列表时 - 比较历史记录中的文件列表xml。
  3. 这两个步骤无法帮助您找到重命名的文件,但会为您提供删除或添加的文件的信息。

    比较文件是否已更改可以通过保存其历史文件大小来完成。如果您需要更精确的检查,可以为文件生成CRC:

    http://damieng.com/blog/2006/08/08/calculating_crc32_in_c_and_net

    但是生成crc是一项非常漫长的任务。