2010-04-22 23 views
6

Ora utilizzo il mio proprio programma FTP Java per trasferire gli oggetti dal mio PC al server del sito Web del mio ISP.Google App Engine supporta ftp?

Desidero utilizzare la servlet di Google App Engine per ottenere i messaggi IPN Paypal, quindi archiviare i messaggi nei miei oggetti e inviare gli oggetti al server del sito Web del mio ISP, è possibile? Ho sentito che Google App Engine non supporta FTP.

Non mi aspetto che Google lo faccia per me, ma posso utilizzare il mio programma FTP Java nell'app Web che ho caricato su App Engine per farlo?

Frank

+0

Perché non ospitare solo i dati _on_ App Engine? I file FTP su un host web ISP sembrano inutilmente rotondi. –

+0

Forse perché i dati sono ospitati altrove, vengono generati e appartengono a terze parti ?! – ZiglioUK

risposta

8

No, non è possibile aprire qualsiasi connessione socket, tranne utilizzando URL Fetch service su HTTP/HTTPS per questi intervalli di porta:

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

+1

FTP ora funziona su Google App Engine. Vedere la risposta sotto per codice funzionante. – Praxiteles

5

A partire da April 9 this year (SDK 1.7.7) questo non è più un problema. Le prese in uscita (ad esempio FTP) sono generalmente disponibili per tutte le app abilitate alla fatturazione.

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

+0

"billing-enabled" è la frase chiave ... – Drux

+0

Ciò significa che anche lo sFTP è possibile? – Praxiteles

+0

Vedi questo per [Python] (https://developers.google.com/appengine/docs/python/sockets/) – hyip

-1

È possibile utilizzare il client di Apache Commons FTP (org.apache.commons.net.ftp.FTPClient) se lo metti in modalità passiva. Basta effettuare le seguenti operazioni:

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

Allora non chiamerà ServerSocketFactory, e la vita dovrebbe essere buona!

3

AGGIORNAMENTO: Il nostro codice di seguito potrebbe non funzionare più. Questo codice FTP ha funzionato per noi prima, ma ora vediamo un commento sotto che dice che FTP non è più supportato su App Engine. Vedi il link qui sotto. Se provi questo codice e funziona o non funziona per te per FTP diretto (TLS NON è supportato BTW) - per favore commenta.


Sì. FTP ora funziona su Google App Engine. (La risposta accettata è obsoleta e non più vera.)

Ecco il codice testato e funzionante su 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) 

Di nota, FTP TLS non sembra funzionare al momento. (Il tentativo di eseguire "da ftplib import FTP_TLS" non riesce.)

+0

Inoltre, è ancora rotto se hai bisogno di modalità attiva piuttosto che passiva (prova ad aggiungere un 'ftp.set_pasv (False) ', come da mia risposta a http://stackoverflow.com/questions/28264627/unable-to-dowload-csv-file-from-ftp-server-in-app-engine/28266330#28266330. –

+4

Ora loro Stai dicendo che FTP non è supportato FU App Engine! https://cloud.google.com/appengine/docs/java/sockets/ – ZiglioUK