【问题标题】:Can you force an FTP client to use binary from the server side您可以强制 FTP 客户端从服务器端使用二进制文件吗
【发布时间】:2011-10-12 15:58:22
【问题描述】:

我们的设备上运行专有 FTP 客户端。他们使用基于 python 的 FTP 服务器从我们的网络服务中检索媒体文件(AVI 视频和图像)以及 XML 文件。我遇到的问题是 FTP 客户端想要以 ASCII 模式而不是二进制模式下载媒体文件。我想继续使用我们的python FTP服务器(pyftpdlib),但我想不出一种方法来强制客户端使用二进制模式。

我浏览了 FTP RFC,寻找一个命令/响应序列,它允许我们的 FTP 服务器告诉 FTP 客户端使用二进制而不是 ASCII。这样的命令/响应序列是否存在?

【问题讨论】:

  • no AFAIK 服务器端没有这样的命令序列...您可以尝试仅从服务器端交付二进制文件,但这可能会导致客户端出现非常奇怪的行为/崩溃期望 ASCII ......恕我直言,唯一的解决方案是改变客户端的行为!

标签: python ftp


【解决方案1】:

您可以通过使用自定义 FTPHandler 并覆盖 FTPHandler.ftp_TYPE(filetype) 方法来覆盖默认行为或 ftp 服务器,这样会强制您的服务器以二进制模式提供文件 self._current_type = "i"

【讨论】:

  • 我使用了你的方法,但 Filezilla 尝试对名为“test”的文件使用“TYPE A”,该文件是一个 zip 存档,但已损坏。我的服务器“按原样”提供服务,但客户端以文本模式读取它。将文件更改为“test.dat”会强制 Filezilla 使用“TYPE I”并修复了该问题。但问题是,即使我的服务器将“TYPE A”视为“TYPE I”,客户端仍然会损坏文件。
猜你喜欢
  • 1970-01-01
  • 2013-10-27
  • 2011-05-29
  • 2013-12-05
  • 2022-01-15
  • 1970-01-01
  • 2013-04-21
  • 2011-03-10
  • 2016-01-04
相关资源
最近更新 更多