2010-12-28 7 views
0

私はappengineアプリを持っており、第三者からファイルを受け取る必要があります。appengine-ftpの代替品

私にとって最良の選択は、ftp経由でファイルを受け取ることですが、少なくとも1年前はそれが不可能であると読んでいます。

まだできませんか?どちらの方法でファイルを受け取ることができますか?

これは私のプロジェクトにとって非常に重要ですが、実際は不可欠です。

Thx a lot !!!!

+0

これは、FTPを使用できません。ファイルが大きい場合は、独自のハンドラを作成したり、BlobStoreを使用したりしてください。ユーザーはフォームを使用することも、HTTP POSTを使用してアプリにアップロードするプログラムを作成することもできます。より詳細な説明は難しい –

+0

こんにちは、2番目のオプションはどういう意味ですか? (私は初心者です)。ソリューションが自動であることが不可欠です。他のサーバーにはいくつかのファイルがあり、自動的にそれらを送信する方法が必要です。毎分新しいファイルをチェックしてappengineフォルダやブロブストアに、またはどこにでも送信します。通常のサーバーに、ブロブストアに直接挿入するアプリを持つことができますか? appengineが他のサーバーのフォルダをチェックする方法はありますか?他のアイデア?ありがとう!! – david

+0

最初のオプションは、ハンドラに関するものです。 – david

答えて

2

Blobstoreを使用する必要があります。

編集:(これはAndroidのためであった。他の場所、例えばApache HTTPClientを使用)、Javaでブロブストアに投稿するthis SO questionのコードフラグメントが動作する必要があります。投稿するURLはcreateUploadUrlで作成されている必要があります。ソースサーバーと通信する最も簡単な方法は、GET URLです。 "/ makeupload"はtext/plainで、POSTするURLだけを含んでいます。許可されていないアップロードを防ぐには、POSTでパスワードを要求するか、既にGET(クエリパラメータなど)でパスワードを要求することができます。

+0

他のコメントに書いたように。他のサーバーからどうやって自動化できますか? – david

+0

他のサーバーは、ファイルをアップロードするためにHTTP POST要求を行う必要があります。そのためにいくつかのコードを書く必要があります。どのようなプログラミング言語を使いたいのですか? –

+0

javaは素敵です!もう一度。 – david

0

回答は、インポートのサイズ範囲によって大きく異なります。小さなファイルの場合は、Urlfetch APIで十分です。

大規模なCSVファイルを70-800MBからインポートする傾向があります。その場合、従来のBlobstoreとHTTP-POSTはそれを切断しません。 GAEは32MBを超えるHTTP要求を直接処理することはできず、静的ファイルを32MB以上手動でインポートすることもできません。

伝統的に、* nixリレーを使用してデータファイルをダウンロードし、整形式のJSONセグメントに分割し、おそらく10-30 K HTTP-POSTリクエストをGAEに戻しました。すべての入力が整形式に入力されます。これは唯一実行可能な回避策でしたが、1 GBを超えるファイルについては、スケーリングのパフォーマンスのために推奨される方法として引き続き使用される可能性があります(複雑なインポート手順は数百のF1インスタンスに簡単に分散されます)。

幸いにも、April 9 this year (SDK 1.7.7)のように、大きなファイルをGAEに直接インポートすることは、もはや大きな問題ではありません。送信ソケットは一般にすべての請求対応アプリで使用できるため、FTP接続を開いてダウンロードすることで簡単に「大容量ファイル」の問題を解決できます。

ソケットAPIの概要(パイソン):https://developers.google.com/appengine/docs/python/sockets/