使用 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 服务器中的文件校验和 的相关文章

  • Javascript CRC16 示例代码或实现

    有人可以分享一个链接或示例代码来实现 JavaScript 中字符串的校验和吗 预先非常感谢 你想要什么 你需要更具体 CRC16 算法数量众多 每种算法都有自己的多项式并用于特定用途 一些 CRC16 算法非常适合创建哈希 例如 对于 R
  • PHP 通过 FTP 下载整个文件夹(递归)

    我目前有一个非常大的网站 大小约为 5GB 包含 60 000 个文件 当前主机并没有做太多事情来帮助我将网站转移到新主机 我的想法是在新主机上制作一个简单的脚本 通过 FTP 传输到旧主机并下载整个 public html 文件夹 递归地
  • 在VS2008中,对于网站的FTP发布,有没有办法保存FTP登录密码?

    我喜欢 Visual Studio 2008 IDE 集成 非命令行 功能 可以选择通过 FTP 将 ASP NET 网站发布到我的网络服务器 我可以存储我的 FTP 用户名 但没有看到任何存储我的 FTP 密码的选项 因此我每次发布时都必
  • 使用 FtpWebRequest 将文件上传到 FTP 时,远程服务器返回错误:(550)

    I need to upload file via ftp to host The home2 travele2 path created on the root of host 我可以通过 FileZilla 程序将文件上传到主机 但是当
  • 使用 Python 连接从 FTP 检索文件

    我构建了这个简单的工具来暴力破解并连接到 ftp 服务器 import socket import ftplib from ftplib import FTP port 21 ip 192 168 1 108 file1 passwords
  • 防止 .exe 时间戳发生变化

    有谁知道如何防止可执行文件的时间戳更改 我正在尝试为 exe 生成一致的哈希代码 但我认为时间戳可能会阻止这种情况发生 每次我重新编译代码 VS C 时 FastSum 都会生成不同的校验和 Thanks PE 文件格式 如 EXE 中 具
  • 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同

    System Net WebException 服务器响应 PASV 命令返回的地址与建立 FTP 连接的地址不同 在 System Net FtpWebRequest CheckError 在 System Net FtpWebReque
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke
  • FTP 下载冻结整个应用程序

    我正在尝试从 FTP 服务器下载一个大约 100 MB 的文件 这是一个测试 bin 文件 因为我正在测试该应用程序 我猜我将来想要下载的文件会更重 当我想下载文件时 整个应用程序就会冻结 几秒钟后它就会下载文件 该文件已完成 并且已成功下
  • PowerShell FTP 下载文件和子文件夹

    我喜欢写一个PowerShell脚本来下载全部文件 and 子文件夹从我的 FTP 服务器 我找到了一个脚本来下载一个特定文件夹中的所有文件 但我也喜欢下载子文件夹及其文件 FTP Server Information SET VARIAB
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • 是否可以使用 Python 读取 FTP 文件而不编写它们?

    我正在尝试使用 Python 的 ftplib 读取文件而不写入它们 大致相当于 def get page url try return urllib urlopen url read except return 但使用FTP I trie
  • 使用ftp协议连接密码包含“@”符号的服务器

    我正在尝试使用java中的FTP协议从服务器下载文件 通过使用以下 URL 我可以连接到服务器并下载文件 URL url new URL ftp user password host remoteFile type i 但是当我的密码包含
  • 检查 FTP 文件夹是否存在任何与掩码匹配的文件的批处理文件

    我需要创建一个批处理文件来访问受保护的 FTP 站点 检查文件类型 txt 存在 如果存在则进行下一步 如果不存在则返回0并结束作业 我进行了广泛的搜索 但找不到任何解决方案 这不是一项简单的任务 特别是当您需要检查与掩码匹配的文件 而不是
  • 使用 Python ftplib 的 FTPS - 需要会话重用

    因此 我尝试连接到 FTP 服务器以获取目录列表并下载文件 但是之后的第一个命令prot p 函数引发异常 从日志中产生这些错误 get 150 Here comes the directory listing r n resp 150 H
  • 如何创建媒体文件的稳定校验和?

    如何仅创建媒体数据的校验和而不包含元数据以获得媒体文件的稳定标识 最好是使用支持多种格式的库的跨平台方法 例如vlc ffmpeg 或 mplayer 媒体文件应该是常见格式的音频和视频 图像也很好 好吧 可能已经晚了 11 年才得到答案
  • 正确检查 FTP 服务器连接

    我在程序开始时打开与 FTP 服务器的连接 在对服务器执行操作之前 我想检查连接是否已成功建立 最简单快速的方式 因此如果连接消失 我将尝试再次连接 我用这段代码来做到这一点 private boolean checkConnection
  • Qt 5.0中添加QFtp

    我需要在我的项目中使用 QFtp 类 当我使用 Qt 5 0 进行开发时 我需要从 gitorious 存储库下载该类 https qt gitorious org qt qtftp https qt gitorious org qt qt
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 使用 PHP glob 列出 FTP 服务器上的文件不起作用

    我使用此代码来访问目录 location files pictures glob location png 我想使用 FTP 访问远程路径 location opendir ftp user password host name files

随机推荐

  • 如何返回 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服务器是否需要计算