2010-04-22 23 views
6

Jetzt benutze ich mein eigenes Java-FTP-Programm, um Objekte von meinem PC auf den Website-Server meines ISP zu übertragen.Unterstützt Google App Engine ftp?

Ich möchte das Google App Engine-Servlet verwenden, um Paypal IPN-Nachrichten zu erhalten, die Nachrichten dann in meinen eigenen Objekten zu speichern und die Objekte auf dem Website-Server meines Internetdienstanbieters zu veröffentlichen. Ist dies machbar? Ich habe gehört, dass Google App Engine FTP nicht unterstützt.

Ich erwarte nicht, dass Google es für mich tut, aber kann ich mein eigenes Java FTP-Programm in der Web-App verwenden, die ich auf die App Engine hochlade?

Frank

+0

Warum hosten Sie nicht einfach die Daten _on_ App Engine? FTP-Dateien zu einem ISP-Webhost scheint unnötigerweise Kreisverkehr. –

+0

Vielleicht, weil die Daten woanders gehostet werden, generiert wird und Dritten gehört ?! – ZiglioUK

Antwort

8

Nein, können Sie keine Socket-Verbindung geöffnet, außer durch URL Fetch service auf HTTP/HTTPS an diesen Port Bereiche:

80-90, 440-450, 1024-65535.

+1

FTP funktioniert jetzt auf Google App Engine. Siehe die Antwort unten für den Arbeitscode. – Praxiteles

5

Ab April 9 this year (SDK 1.7.7) ist das kein Problem mehr. Outbound-Sockets (z. B. FTP) stehen im Allgemeinen allen abrechnungsfähigen Apps zur Verfügung.

Socket API Übersicht (Java): https://developers.google.com/appengine/docs/java/sockets/

+0

"Billing-aktiviert" ist der Schlüsselsatz ... – Drux

+0

Bedeutet das, dass sFTP auch möglich ist? – Praxiteles

+0

Sehen Sie dies für [Python] (https://developers.google.com/appengine/docs/python/sockets/) – hyip

-1

Sie können die Apache Commons FTP-Client verwenden (org.apache.commons.net.ftp.FTPClient), wenn Sie es in den passiven Modus. Mach einfach folgendes:

FTPClient client = new FTPClient(); 
    client.connect(FTP_HOST); 
    client.enterLocalPassiveMode(); 

Dann wird es nicht ServerSocketFactory nennen, und das Leben sollte gut sein!

3

UPDATE: Unser Code unten funktioniert möglicherweise nicht mehr. Dieser FTP-Code funktionierte bereits für uns, aber wir sehen unten einen Kommentar, der besagt, dass FTP auf App Engine nicht mehr unterstützt wird. Siehe den folgenden Link. Wenn Sie diesen Code versuchen und es funktioniert oder nicht funktioniert für Sie gerade FTP (TLS wird NICHT BTW unterstützt) - bitte kommentieren.


Ja. FTP funktioniert jetzt in Google App Engine. (Die akzeptierte Antwort ist veraltet und nicht länger zutreffend.)

Hier ist getestet und funktioniert Code auf GAE.

#!/usr/bin/env python 
from google.appengine.ext import webapp 
from ftplib import FTP 

class HwHandler(webapp.RequestHandler): 
       def get(self): 
        self.response.out.write('FTP Starting...<br>') 
        ftp = FTP('ftp_site.com') 
        ftp.login('login', 'password') 
        ftp.retrlines('LIST') # list directory contents 
        self.response.out.write('FTP opened') 
        ftp.quit() 

app = webapp.WSGIApplication([ 
    ('/', HwHandler) 
], debug=True) 

Beachten Sie, FTP-TLS scheint derzeit nicht zu arbeiten. (Der Versuch "von ftplib import FTP_TLS" schlägt fehl.)

+0

Darüber hinaus ist es immer noch defekt, wenn Sie den aktiven statt passiven Modus benötigen (versuchen Sie es mit einem 'ftp.set_pasv (Falsch) ', laut meiner Antwort auf http://stackoverflow.com/questions/28264627/unable-to-dowload-csv-file-from-ftp-server-in-app-engine/28266330#28266330. –

+4

Jetzt sie "FTP wird nicht unterstützt. FU App Engine! https://cloud.google.com/appengine/docs/java/sockets/ – ZiglioUK