1

我正在使用 pyftplib 创建一个用于上传视频的 ftp 服务器。ftp 服务器本身位于谷歌计算引擎之上,视频文件存储在谷歌云中。我通过使用 pyftplib 中的事件回调在将视频发送到 ftp 服务器时将视频从计算引擎上传到云来做到这一点。同样,当客户端请求文件时,我正在从谷歌云中检索文件。在下面代码中描述的情况下,我需要响应未找到文件。但是,我不清楚当文件不存在时预期的 FTP 响应是什么。是否有我不知道的特定状态代码?

def ftp_RETR(self, file):
    for restricted_file_name in restricted_file_names:
        if restricted_file_name.lower() in file.lower():
            self.respond('200') # this is where I want to say file doesn't exist
            return
    try:
        storage_client = storage.Client(project='myproject')
        bucket = storage_client.get_bucket('myvideo')
        blob = bucket.blob(file)
        blob.download_to_file(open(file, 'w'))
    except NotFound:
        pass
    FTPHandler.ftp_RETR(self, file)

谢谢

4

1 回答 1

2

来自 RFC 959,即 FTP 标准:

 450 Requested file action not taken.
     File unavailable (e.g., file busy).
于 2017-10-11T04:12:43.693 回答