2017-03-13 2 views
0

Ich habe einen rester Webservice (Flask Webservice), wo Clients mir Dateiobjekt (Bild oder PDF) sendet; Jetzt möchte ich es in FTP-Speicherort speichern. Wie kann ich ein Dateiobjekt (Bild oder PDF) auf dem FTP-Speicherort speichern?Wie übertragen FileStorage-Objekt über FTP in Python

Ich benutze Flask Webservice(Rester API), ich bin in der Lage, Datei Objekt vom Typ FileStorage zu empfangen. dann versuche ich das Dateiobjekt (Image oder pdf) auf FTP zu speichern mit paramiko API paramiko.SFTPClient class, um die Datei zu FTP zu übertragen/zu speichern. Aber es akzeptiert das Dateiobjekt nicht. Es wird nur der lokale Dateipfad erwartet. Unten finden Sie die Beispielcode, der verwendet wird Datei zu übertragen

FTP-Code auf FTP:

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

Könnten Sie mir bitte vorschlagen, wie ich Dateiobjektspeicher FTP erreichen kann?

Antwort

0

Eine einfache Lösung wäre, Ihr FileStorage-Objekt auf der Festplatte zu speichern, und geben Sie dann den Pfad zu Paramiko SFTP-Client (Ihre localpath Variable).

Beachten Sie, dass dies eine nicht optimierte Lösung ist, da Daten auf der Festplatte geschrieben und dann erneut gelesen werden müssen.


Für eine optimierte Lösung, nach paramiko's SFTP doc, könnte man die Methode

putfo (fl, remotePath, file_size = 0, Rückruf = None, bestätigen = True) verwenden

Das würde Ihre Linie sftp.put(localpath, filepath) durch sftp.putfo(filestorage_object, filepath)

ersetzen