私の問題は、ユーザーがアプリケーションにテキストファイルをアップロードすることを中心に行われています。このファイルを取得し、データストアに保存する前にアプリで処理する必要があります。ちょっと読んだところでは、ユーザーのアップロードがブロブとしてデータストアに直接移動することがわかりました。そのファイルを取得して操作を実行すると(内部のデータの変更を意味します)、データストア。これらの操作はすべてアプリで行う必要があります。 データストアのドキュメントから残念ながら、http://code.google.com/appengine/docs/python/blobstore/overview.html は、アプリケーションがデータストアにBLOBを直接作成できません。それが私の頭痛です。私は、ユーザーアップロードのやりとりなしに、アプリケーションからデータストアに新しいBLOB /ファイルを作成する方法が必要です。Google App Engineのデータストアでファイルを操作する方法
4
A
答えて
2
blobstore != datastore
。
あなたはあまりにも長い間、あなたのデータはあなたのエンティティにdb.BlobProperty
を使用して< 1MBですと好きな限りストアにデータを読み書きすることができます。 Woobleコメントとして
、新しいFile APIはあなたがブロブストアに書き込むことができますが、あなたはインクリメンタルタスクやMapReduceのライブラリのようなものを使用してブロブストア・ファイルに足すされていない限り、あなたはまだのために1MBのAPI呼び出しの制限によって制限されています読み書き。
+1
さらに、アップロードにブロブストアを明示的に使用すると、ユーザーアップロードはブロブストアに直接移動します他の場合は、他のフォームと同様にアプリに送信されます。 –
2
ありがとうございました。多くの眠れない夜、3つのApp Engine Books、たくさんのGoogle検索の後、私は答えを見つけました。ここでは、コード(それはかなり自明でなければなりません)です。
from __future__ import with_statement
from google.appengine.api import files
from google.appengine.ext import blobstore
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
class MainHandler(webapp.RequestHandler):
def get(self):
self.response.out.write('Hello WOrld')
form=''' <form action="/" method="POST" enctype="multipart/form-data">
Upload File:<input type="file" name="file"><br/>
<input type="submit"></form>'''
self.response.out.write(form)
blob_key="w0MC_7MnZ6DyZFvGjgdgrg=="
blob_info=blobstore.BlobInfo.get(blob_key)
start=0
end=blobstore.MAX_BLOB_FETCH_SIZE-1
read_content=blobstore.fetch_data(blob_key, start, end)
self.response.out.write(read_content)
def post(self):
self.response.out.write('Posting...')
content=self.request.get('file')
#self.response.out.write(content)
#print content
file_name=files.blobstore.create(mime_type='application/octet-stream')
with files.open(file_name, 'a') as f:
f.write(content)
files.finalize(file_name)
blob_key=files.blobstore.get_blob_key(file_name)
print "Blob Key="
print blob_key
def main():
application=webapp.WSGIApplication([('/', MainHandler)],debug=True)
util.run_wsgi_app(application)
if __name__=='__main__':
main()
関連する問題
- 1. Google App EngineのデータストアのGUI
- 2. Google App Engineを - データストア - GQLクエリ
- 3. Google App Engineデータストアのリファクタリング
- 4. Google App Engineでデータストアのフィールド値を更新する方法
- 5. Google App EngineデータストアでNOT IN句を使用する方法
- 6. 別のGoogle App Engineプロジェクトのデータストアにアクセスする方法は?
- 7. Google App Engineでの画像操作
- 8. Google App EngineのPythonのデータストアに
- 9. データストア用のGoogle App Engineの価格は
- 10. Google App Engine dev_appserver 1.9データストアのフラッシュ
- 11. Google App Engineのデータストアは、非複合インデックス
- 12. Google App Engineデータストアの処理なしタイプエラー
- 13. Google App Engineデータストア内部サーバーエラー(localhost)
- 14. Google App Engineデータストアのエンティティを部分的に更新する方法
- 15. Google App Engine:サブドメイン/サブディレクトリの作成方法
- 16. Google App Engineデータストア内に多次元配列を格納する方法
- 17. App Engineデータストア(Java)のルートエンティティをクエリする方法
- 18. Google App Engineのデータストアの設定:再利用可能ですか?
- 19. Android、App Engine +データストアでプロフィール画像を保存するのに最適な方法
- 20. Google App EngineでデータストアIDを選択していますか?
- 21. Google App Engine Java - フェデレーションログイン、データストアに保存するもの
- 22. Google App Engineのデータストアをネイティブアプリに読み取る
- 23. IdはGoogle App Engineのデータストアで何も返さない
- 24. Google App EngineでCronジョブを作成する方法
- 25. Google App Engine ProjectをGradleで作成する方法
- 26. Google App Engineのローカルドライブからデータストアに画像を保存
- 27. Google App Engineのデータストアからデータを削除
- 28. Google App EngineのデータストアからAndroidアプリにデータを取得
- 29. Google App EngineデータストアにZIPデータフィードを読み込む
- 30. JDOとGoogle App Engineデータストア:コード内の重要な表現
http://code.google.com/appengine/docs/python/blobstore/overview.html#Writing_Files_to_the_Blobstoreを参照してください。ファイルAPIを使用してプログラムによってブロブストアに書き込むことができます。 (注:これはプログラムでブロブを作成できないという同じページにあります;ドキュメントを最新の状態に保つために):) – geoffspear