我有一个rester web服务( Flask Webservice
),客户端向我发送文件对象(image或pdf);现在,我想将其存储到FTP位置。如何将文件对象(图像或PDF)存储到FTP位置。
我正在使用Flask Webservice(Rester API)
,我可以接收FileStorage
类型的文件OBJCT。然后,我尝试使用paramiko
API paramiko.SFTPClient class
将文件对象(图像或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?
一个简单的解决方案是在磁盘上保存您的filestorage对象,然后给paramiko sftp client的路径(您的localpath
变量)。
请注意,这是一个不优化的解决方案,因为它需要在磁盘上写入数据然后重新阅读。
对于更优化的解决方案,根据Paramiko的SFTP Doc,您可以使用该方法
putfo(fl,remotepath,file_size = 0,callback = none,confirst = true)
可以用sftp.putfo(filestorage_object, filepath)
sftp.put(localpath, filepath)