2010-04-22 31 views
6

Bây giờ tôi sử dụng chương trình Java FTP của riêng tôi để ftp các đối tượng từ máy tính của tôi đến máy chủ trang web của ISP của tôi.Google App Engine có hỗ trợ ftp không?

Tôi muốn sử dụng servlet của Google App Engine để nhận các tin nhắn IPN của Paypal, sau đó lưu các tin nhắn vào các đối tượng của chính tôi và ftp các đối tượng vào máy chủ trang web của ISP của tôi. Tôi nghe nói rằng Google App Engine không hỗ trợ FTP.

Tôi không mong đợi Google làm điều đó cho tôi, nhưng tôi có thể sử dụng chương trình Java FTP của riêng mình trong ứng dụng web mà tôi tải lên App Engine để làm điều đó không?

Frank

+0

Tại sao không chỉ lưu trữ dữ liệu _on_ App Engine? Các tập tin FTP vào một máy chủ web ISP dường như không cần thiết. –

+0

Có thể vì dữ liệu được lưu trữ ở nơi khác, được tạo và thuộc về bên thứ 3 ?! – ZiglioUK

Trả lời

8

Không, bạn không thể mở bất kỳ kết nối ổ cắm trừ bằng cách sử dụng URL Fetch service trên HTTP/HTTPS để những cổng dao động:

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

+1

FTP hiện hoạt động trên Google App Engine. Xem câu trả lời dưới đây để biết mã làm việc. – Praxiteles

5

Kể từ April 9 this year (SDK 1.7.7), đây không còn là vấn đề nữa. Các ổ cắm đi (ví dụ: FTP) thường có sẵn cho tất cả các ứng dụng hỗ trợ thanh toán.

Socket API Tổng quan (Java): https://developers.google.com/appengine/docs/java/sockets/

+0

"đã bật thanh toán" là cụm từ khóa ... – Drux

+0

Điều này có nghĩa là sFTP cũng có thể thực hiện được không? – Praxiteles

+0

Xem phần này cho [Python] (https://developers.google.com/appengine/docs/python/sockets/) – hyip

-1

Bạn có thể dùng client Apache Commons FTP (org.apache.commons.net.ftp.FTPClient) nếu bạn đặt nó vào chế độ thụ động. Chỉ cần làm như sau:

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

Sau đó, nó sẽ không gọi ServerSocketFactory và cuộc sống phải tốt!

3

CẬP NHẬT: Mã của chúng tôi bên dưới có thể không hoạt động nữa. Mã FTP này đã làm việc cho chúng tôi trước đây nhưng bây giờ chúng tôi thấy một bình luận dưới đây nói rằng FTP không còn được hỗ trợ trên App Engine nữa. Xem liên kết bên dưới. Nếu bạn thử mã này và nó hoạt động hoặc không hoạt động cho bạn cho FTP thẳng (TLS KHÔNG được hỗ trợ BTW) - hãy bình luận.


Có. FTP hiện hoạt động trên Google App Engine. (Câu trả lời được chấp nhận đã lỗi thời và không còn đúng nữa.)

Đây là mã được thử nghiệm và làm việc trên 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) 

Lưu ý, FTP TLS dường như không hoạt động. (Cố gắng làm "từ ftplib import FTP_TLS" không thành công.)

+0

Hơn nữa, nó vẫn bị hỏng nếu bạn cần chế độ hoạt động hơn là thụ động (thử thêm một 'ftp.set_pasv (False) ', theo câu trả lời của tôi cho http://stackoverflow.com/questions/28264627/unable-to-dowload-csv-file-from-ftp-server-in-app-engine/28266330#28266330. –

+4

Bây giờ họ đang nói FTP không được hỗ trợ. FU App Engine! https://cloud.google.com/appengine/docs/java/sockets/ – ZiglioUK

Các vấn đề liên quan