【问题标题】:Upload changes made to the file (FTP)上传对文件所做的更改 (FTP)
【发布时间】:2011-10-11 11:06:11
【问题描述】:

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

【问题讨论】:

  • 可能取决于 FTP 版本协议和客户端/服务器版本。但我真的不是 ftp 专业人士。
  • 问题是:FTP 是否允许随机文件访问?除了您必须计算二进制差异之外,您还必须应用该差异...Similar question
  • 正如我从您的“类似问题”中了解到的,如果我尝试从特定点写入文件,它会在这个地方一分为二?

标签: c# .net ftp


【解决方案1】:

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

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

  1. 在客户端应用程序中以某种 xml 格式保存文件列表。
  2. 当您从 ftp 检索文件列表时 - 与历史 xml 中的文件列表进行比较。

这两个步骤不会帮助您找到哪些文件被重命名,但会为您提供删除或添加哪些文件的信息。

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

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

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

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多