如何在python中通过FTP传输FileStorage对象

时间:2017-03-13 03:18:11

标签: python web-services flask ftp sftp

我有一个rester webservice(Flask Webservice),客户端向我发送文件对象(Image或pdf);现在我想将它存储到FTP位置。如何将文件对象(图像或pdf)存储到FTP位置。

我正在使用Flask Webservice(Rester API),我能够接收FileStorage类型的文件对象。然后我尝试使用paramiko API paramiko.SFTPClient class将文件对象(Image或pdf)存储到FTP,以将文件传输/存储到FTP。但它不接受文件对象。它只期望本地文件路径。 下面是用于将文件传输到FTP的示例代码

FTP代码:

import paramiko
transport = paramiko.Transport((host, port))
transport.connect(username = username, password = password)
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.put(localpath, filepath)

您能否建议我如何实现FTP文件对象存储?

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是将FileStorage对象保存在磁盘上,然后将路径提供给paramiko sftp client(您的localpath变量)。

请注意,这是一个非优化的解决方案,因为它需要在磁盘上写入数据然后重新读取它。

对于更优化的解决方案,根据paramiko's SFTP doc,您可以使用方法

  

putfo(fl,remotepath,file_size = 0,callback = None,confirm = True)

这会将sftp.put(localpath, filepath)替换为sftp.putfo(filestorage_object, filepath)