使用storbinary进行部分FTP上传

0 投票
1 回答
1498 浏览
提问于 2025-04-16 09:08

我正在通过FTP把一个XML文件发送到服务器,但文件大小53KB的部分只发送了48KB就停了。

我的代码是:

if __name__ == '__main__':

    ftp = ftplib.FTP("IP")
    ftp.login(user = 'NAME', passwd = 'PASS')
    ftp.cwd('/web/content/tree/_demo') 
    a.write('<root>\n' + DirXML(dirname) + '\n</root>')
    f=open(outputname,'rb')
    ftp.storbinary('STOR '+os.path.basename(outputname),f)
    f.close()
    ftp.quit()

这个问题和这个链接里的情况一样:用Python的storbinary进行部分上传。不过,这个链接并没有给出解决办法。通过FTP客户端发送文件是没问题的,通过Python解释器也可以,但通过脚本发送就不行。

补充说明:没有抛出任何异常,整个过程看起来都正常,但我查看上传的文件时发现它的末尾被截断了。如果我去掉FTP的部分,直接把文件导出到我的本地电脑上,文件就能正常生成。至于缩进问题,只是我格式弄得不好。

1 个回答

0

你在用 storlines,其实应该用 storbinary

前者会进行换行符的转换。

storbinary 这个 ftplib 的代码在传输之前会先执行 TYPE I,这样可以确保传输模式设置为图像模式(也就是二进制模式)。

另外,确保你要传输的文件在开始传输之前已经被刷新或关闭。因为通过 write 写入的数据,可能在 ftp 库打开文件时还没有写入到磁盘上。

撰写回答