当前位置: 首页 > 工具软件 > pyftpdlib > 使用案例 >

linux c ftp断点rest,ftplib和pyftpdlib:将文件上载到s时REST(restart)命令未按预期工作...

陆绪
2023-12-01

我用pyftpdlib设置了一个简单的FTP服务器,用ftplib设置了一个客户机。当我让客户机脚本运行时,它按预期正确地上载了文件。在

pyftpdlib服务器代码:import logging

from pyftpdlib.handlers import FTPHandler

from pyftpdlib.servers import FTPServer

from pyftpdlib.authorizers import DummyAuthorizer

authorizer = DummyAuthorizer()

authorizer.add_user("test","123","C:\\Users\\Usr\\Desktop\\server_data","elradfmwM")

handler = FTPHandler

handler.authorizer = authorizer

logging.basicConfig(level=logging.DEBUG)

connection = ("localhost", 8080)

ftpd = FTPServer(connection, handler)

ftpd.serve_forever()

ftplib客户端代码1:

^{pr2}$

现在我想测试REST(从特定位置重新启动上载/下载)功能。所以我在上传时中断了客户端代码(只需在上传时关闭命令提示符)。接下来,当服务器仍在运行时,我运行了以下客户端代码,试图从中断位置恢复上载:

ftplib客户端代码2:import ftplib

ftp = ftplib.FTP()

ftp.connect("localhost",8080)

ftp.login("test","123")

block_size = 128

c_dir = "C:\\Users\\Usr\\Desktop\\client_data"

filename = "test.pdf" # ~ 30Mb

ftp.dir()

myfile = open(c_dir + "\\" + filename , "rb")

ftp.voidcmd('TYPE I')

rest_pos = ftp.size(filename)

print(rest_pos)

ftp.storbinary("STOR " + filename, myfile, blocksize=block_size, rest=rest_pos)

ftp.dir()

ftp.close()

当我运行客户端代码#2时,它确实会上载,但似乎它没有从正确的位置开始。在

文件大小约为30 Mb

客户端代码#1正确上传(约30Mb)

客户端代码#2上载,但文件较大且已损坏(约35Mb)

在中断之后,我比较了rest_pos的输出与Windows下的文件大小,它们确实匹配。所以我传递给rest的位置与Windows下的相同。在

我对python和ftp相当陌生,不知道问题出在哪里。谷歌搜索,但找不到任何类似的东西。在

如有任何提示/提示,我们将不胜感激:)

 类似资料: