Google App Engine是否支持ftp?

时间:2010-04-22 18:29:16

标签: google-app-engine ftp

现在我使用自己的Java FTP程序将对象从我的PC ftp到ISP的网站服务器。

我想使用Google App Engine的servlet获取Paypal IPN消息,然后将消息存储到我自己的对象中并将对象ftp到我的ISP的网站服务器,这是可行的吗?我听说Google App Engine不支持FTP。

我不希望谷歌为我做这件事,但是我可以在我上传到App Engine的网络应用程序中使用我自己的Java FTP程序吗?

4 个答案:

答案 0 :(得分:8)

不,除非在HTTP / HTTPS上使用URL Fetch service到这些端口范围,否则无法打开任何套接字连接:

80-90,440-450,1024-65535

答案 1 :(得分:5)

April 9 this year (SDK 1.7.7)开始,这不再是问题。出站套接字(例如FTP)通常适用于所有启用结算的应用。

套接字API概述(Java):https://developers.google.com/appengine/docs/java/sockets/

答案 2 :(得分:3)

更新:我们的代码可能不再有效。此FTP代码之前适用于我们,但我们现在看到一条评论,表示App Engine上不再支持FTP。请参阅以下链接。如果您尝试此代码并且它对于直接FTP(TLS不支持BTW)有效或不起作用 - 请发表评论。


是。 FTP现在适用于Google App Engine。 (接受的答案已经过时,不再适用。)

以下是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)

值得注意的是,FTP TLS目前似乎无法正常工作。 (试图“从ftplib导入FTP_TLS”失败。)

答案 3 :(得分:-1)

如果将其置于被动模式,则可以使用Apache Commons FTP客户端(org.apache.commons.net.ftp.FTPClient)。只需执行以下操作:

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

然后它不会调用ServerSocketFactory,生活应该很好!