使用 Apache FtpClient 计算 FTP 服务器中的文件校验和

2023-12-10

我正在使用 Apache Commons Net 的 FtpClient 将视频上传到 FTP 服务器。为了检查文件是否确实已成功传输,我想计算远程文件的校验和,但不幸的是我发现没有相关的API可以使用。

我的问题是:ftp服务器是否需要计算文件校验和?
如果答案是肯定的,如何在 FtpClient 中获取校验和?
如果答案是否定的,FtpClient如何知道文件是否真的已成功且完全传输?


使用 FTP,我建议验证上传,如果可能的话.

问题是没有广泛的标准 API 来使用 FTP 计算校验和。

对于 FTP 的校验和计算命令有很多建议。尚未被接受。

最新的提案是:
https://datatracker.ietf.org/doc/html/draft-bryan-ftpext-hash-02

因此,不同的 FTP 服务器支持不同的校验和命令,具有不同的语法。HASH, XSHA1, XSHA256, XSHA512, XMD5, MD5, XCRC,仅举一些例子。您需要检查您的 FTP 服务器支持哪些内容(如果有的话)。

您可以使用 WinSCP 进行测试。 WinSCP 支持前面提到的所有命令。测试其校验和计算函数 or checksum脚本命令。如果他们工作的话,启用日志记录并检查 WinSCP 对您的服务器使用什么命令和语法。

> 2015-04-28 09:19:16.558 XSHA1 /test/file.dat
< 2015-04-28 09:19:22.778 213 a98faefdb2c36ca352a2d9b01668aec6b641cf4b 

然后使用 Apache Commons Net 执行命令sendCommand method:

if (FTPReply.isPositiveCompletion(ftpClient.sendCommand("XSHA1", "filename"))
{
    String[] reply = ftpClient.getReplyStrings();
}

(我是WinSCP的作者)


如果您的服务器不支持任何校验和命令,则您没有太多选择:

  • 将文件下载回来并在本地检查。
  • 使用加密 (TLS/SSL) 时,文件在传输过程中损坏的可能性会大大降低。否则接收方(在本例中为服务器)将无法解密数据。因此,如果您确定文件传输已完成(没有解密错误且上传文件的大小与本地原始文件的大小相同),则可以非常确定上传的文件是正确的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Apache FtpClient 计算 FTP 服务器中的文件校验和 的相关文章

随机推荐

  • 如何返回 N1ql 查询结果作为 Couchbase 数据库的 REST API 的响应?

    我想退回N1qlQueryResult作为我的回应REST API 下面是代码 RequestMapping value test method RequestMethod GET public ResponseBody ResponseE
  • 如何限制 api 请求堆栈?

    我有一个 id 数组 我想为每个 id 发出一个 api 请求 但我想控制每秒发出多少个请求 或者更好的是 任何时候只有 5 个打开的连接 并且当连接打开时完成 获取下一张 目前我有这个 它只是同时触发所有请求 each 1 2 3 4 5
  • 预加载我的库的一些函数,同时使用其他人使用 LD_PRELOAD 的原始库

    我已经为open 系统调用并使用预加载LD PRELOAD环境变量 我只想程序的几个功能使用修改后的open 而其他人会使用原来的 将两个程序中的功能分开并不是一种选择 因为一个程序调用另一个程序 如何做呢 下面例子中函数插入的使用类似于这
  • Objective C 相当于 PHP 的“变量”[重复]

    这个问题在这里已经有答案了 在 PHP 和 JavaScript 中 您可以通过使用另一个变量作为其名称的一部分来动态使用一个变量 我不想使用数组作为解决方案的一部分 在 Objective C 中可以实现吗 我想做这样的事情 for in
  • 以逗号分隔的字符串形式检索 SQL 关系

    我有一个 SQL Server 2005 数据库 其中有两个表 Order LineItem 每个 LineItem 都有一个名为 LineItemID 和 OrderID 的字段 我有一个查询正在获取数据库中的所有订单记录 对于每个订单记
  • Django 找不到模板

    我知道很多人都问过这个问题 但是尽管对我的模板目录的路径进行了硬编码 但我似乎无法让 Django 找到我的模板 这是设置 py TEMPLATE LOADERS django template loaders filesystem Loa
  • C# 暂停/恢复上传

    我正在寻找一种通过 C 的 WebClient 暂停或恢复上传过程的方法 伪代码 WebClient Client new WebClient Client UploadFileAsync new Uri http mysite com r
  • R 中的反应性与玩具示例闪亮

    我正在改变这个例子 https gist github com wch 5436415 下面是一个玩具模型 基本上 我需要 selectInput 具有反应性 每次 selectInput 更改时 所选值都会传递给 global r 中的函
  • Apache 虚拟主机不适用于子域

    我有这个配置 但 url app test com 和 stage test com 重定向到相同的代码 部署
  • Spring MVC: 选项不会保持选中状态

    我有一个用于添加新老师的简单表格 我正在使用春天
  • PyQt 多个 tablewidgets 和 tabwidgets

    我的目标是显示 10 个或更多QTabWidget在一个单一的QMainWindow 每个选项卡都有一个唯一的QLabel and QTableWidget 像这样的事情 尽管我设法通过使用以下代码获得预期结果 但我想知道是否有更有效的方法
  • 使用 CSS 均匀分布高度

    我有一个非常棘手的 HTML 问题 我不确定是否有基于 CSS 的解决方案 基本上我有一个三列网格 第一列和第三列可以包含可变数量的行 第二列始终只有一行 每行都有一个最小高度 因此 行数最多的列将具有高度设置为最小高度的所有行 其他列中的
  • 循环遍历可点击元素列表并将 html 写入相应的文件

    我正在使用 jQuery 来获取包含某些关键字的元素列表 我能够获取元素列表 但我不知道如何循环每个元素 单击其子元素并下载新加载的页面 这是我到目前为止的 casperjs 代码 var casper require casper cre
  • awk:致命:无法打开文件“”进行读取(没有这样的文件或目录)

    我正在尝试从网格中的节点读取 x 和 y 坐标 所有节点的坐标都在文件mesh coords xyz中 我想要第 1055 行 它指的是一个叫哈利斯科的地方 nodes file output ascii mesh coords xyz j
  • 是否有可能在 JavaScript 中实现任意精度的算术而不存在舍入问题?

    我尝试过big js bignumber js 和decimal js 它们在某种程度上都工作得相当好 但是当我需要使用足够多的 奇数 数字进行任意精度计算时 它们就显得不足了 我当前的测试用例是31435517643980 1 31435
  • 如何在分布式环境中存储盐

    我不知道如何在我的场景中使用 盐概念 假设我有一个客户端桌面应用程序 它为特定用户加密数据并将其发送到远程服务器 客户端应用程序使用 PKCS 5 生成密钥 其中包含用户密码和 SALT 远程桌面绝不能接触用户的密码 假设我们为加密生成随机
  • gnuplot x 直方图中的标签位置

    我有以下数据 t 4 24 3 0 0 t 6 37 4 0 0 t 8 51 4 2 0 t 4 15 1 0 0 t 6 21 0 0 1 t 8 30 0 0 1 t 4 13 2 1 0 t 6 20 3 1 0 t 8 22 4
  • 在 PHP 中将“原始”字符串格式化为 Java UUID [重复]

    这个问题在这里已经有答案了 是否有一种更有效 更简单的方法可以在 PHP 中将 格式化 Java UUID 不带破折号 转换为 Java 兼容格式 带破折号 最终 我将如何做到这一点 我已经有执行此操作的代码 但它似乎不专业 我觉得它可能可
  • 语法/智能感知损坏?

    我正在使用 Visual Studio 2010 它似乎突然坏了 我打开了一个解决方案 打开了一个类并添加了 namespace Admin public static class SessionManager public static
  • 使用 Apache FtpClient 计算 FTP 服务器中的文件校验和

    我正在使用 Apache Commons Net 的 FtpClient 将视频上传到 FTP 服务器 为了检查文件是否确实已成功传输 我想计算远程文件的校验和 但不幸的是我发现没有相关的API可以使用 我的问题是 ftp服务器是否需要计算