我有一个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文件对象存储?
答案 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)