2010-04-22 4 views
6

Maintenant, j'utilise mon propre programme FTP Java pour transférer des objets de mon PC vers le serveur de mon FAI. Je souhaite utiliser la servlet de Google App Engine pour obtenir des messages IPN Paypal, puis stocker les messages dans mes propres objets et transférer les objets sur le serveur du site Web de mon FAI, est-ce faisable? J'ai entendu dire que Google App Engine ne supporte pas le FTP.Google App Engine prend-il en charge FTP?

Je ne m'attends pas à ce que Google le fasse pour moi, mais puis-je utiliser mon propre programme FTP Java dans l'application web que je télécharge sur App Engine pour le faire?

Frank

+0

Pourquoi ne pas simplement héberger les données _on_ App Engine? FTPing fichiers à un hébergeur ISP semble inutilement rond-point. –

+0

Peut-être parce que les données sont hébergées ailleurs, est généré et appartient à des tiers?! – ZiglioUK

Répondre

8

Non, vous ne pouvez pas ouvrir une connexion socket sauf en utilisant URL Fetch service sur HTTP/HTTPS à ces plages de ports:

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

+1

FTP fonctionne maintenant sur Google App Engine. Voir la réponse ci-dessous pour le code de travail. – Praxiteles

5

A partir de April 9 this year (SDK 1.7.7) ce n'est plus un problème. Les sockets sortants (par exemple FTP) sont généralement disponibles pour toutes les applications compatibles avec la facturation.

API Socket Vue d'ensemble (Java): https://developers.google.com/appengine/docs/java/sockets/

+0

"billing-enabled" est la phrase clé ... – Drux

+0

Cela signifie-t-il que le sFTP est également possible? – Praxiteles

+0

Voir ceci pour [Python] (https://developers.google.com/appengine/docs/python/sockets/) – hyip

-1

Vous pouvez utiliser le client FTP Apache Commons (org.apache.commons.net.ftp.FTPClient) si vous le mettez en mode passif. Il suffit de faire ce qui suit:

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

Ensuite, il ne sera pas appeler ServerSocketFactory, et la vie devrait être bon!

3

MISE À JOUR: Notre code ci-dessous pourrait ne plus fonctionner. Ce code FTP a fonctionné pour nous avant mais nous voyons un commentaire ci-dessous qui indique que FTP n'est plus supporté sur App Engine. Voir le lien ci-dessous. Si vous essayez ce code et cela fonctionne ou ne fonctionne pas pour vous directement FTP (TLS n'est pas pris en charge BTW) - s'il vous plaît commenter.


Oui. FTP fonctionne maintenant sur Google App Engine. (La réponse acceptée est périmée et n'est plus vraie.)

Ici est testé et le code de travail sur 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) 

Il est à noter que FTP TLS ne semble pas fonctionner actuellement. (Essayer de faire "depuis ftplib import FTP_TLS" échoue.)

+0

En outre, il est encore brisé si vous avez besoin du mode actif plutôt que passif (essayez d'ajouter un 'ftp.set_pasv (Faux) ', selon ma réponse à http://stackoverflow.com/questions/28264627/unable-to-dowload-csv-file-from-ftp-server-in-app-engine/28266330#28266330 –

+4

Maintenant, ils disons que FTP n'est pas supporté FU App Engine! https://cloud.google.com/appengine/docs/java/sockets/ – ZiglioUK