Моя проблема вращается вокруг пользователя, который загружает текстовый файл в мое приложение. Мне нужно получить этот файл и обработать его с помощью своего приложения, прежде чем сохранять его в хранилище данных. Из небольшого числа, которое я прочитал, я понимаю, что загрузка пользователя переходит непосредственно к хранилищу данных как кляксы, и это нормально, если я могу затем получить этот файл, выполнить операции над ним (что означает изменение данных внутри), а затем переписать его обратно в хранилище данных. Все эти операции должны выполняться приложением. К сожалению, из документационного хранилища http://code.google.com/appengine/docs/python/blobstore/overview.html приложение не может напрямую создать блокнот в хранилище данных. Это моя главная головная боль. Мне просто нужен способ создания нового blob/файла в хранилище данных из моего приложения без какого-либо взаимодействия с пользователем.Как манипулировать файлами в datastore engine приложения google
ответ
blobstore != datastore
.
Вы можете читать и записывать данные в датасторе столько, сколько вы хотите так долго, как ваши данные < 1MB с помощью db.BlobProperty
на вашей организации.
Как Wooble комментарии, новый File API позволяет писать в Blobstore, но если вы не пошагово сочинительство к Blobstore-файл с помощью задач или что-то вроде библиотеки MapReduce вы все еще ограничена пределом 1MB API вызова для чтение/запись.
Кроме того, пользовательские загрузки загружаются непосредственно в blobstore, если вы явно используете blobstore для загрузки - в противном случае они отправляются в ваше приложение, как любая другая форма. –
Благодарим за помощь. После многих бессонных ночей, 3 книг с движками приложений и большого количества 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 datastore
- 2. Datastore в Google App Engine
- 3. Google App Engine online datastore
- 4. Google App Engine Python Datastore
- 5. Отправка данных в Google App Engine/Datastore
- 6. геопространственных запросов в Google App Engine Datastore
- 7. Ошибка в приложении Google App Engine Datastore.
- 8. Google Cloud Datastore vs Google App Engine
- 9. Google App Engine Launcher delete datastore
- 10. «Пример БД» для Google App Engine Datastore
- 11. Поместите изображение в Datastore Google App Engine
- 12. Где пункт в Google App Engine Datastore
- 13. Multi Threading в Google App Engine Datastore
- 14. Google App Engine dev_appserver 1.9 flush datastore
- 15. конечный запрос от datastore google app engine
- 16. Google App-Engine Datastore чрезвычайно медленный
- 17. Как манипулировать файлами .doc
- 18. Query Google App Engine Datastore с Key.Id
- 19. Google App Engine Datastore sharding in Go
- 20. Многопользовательский ключ Google App Engine Datastore
- 21. Интеграция TInyPNG с Google App Engine Datastore
- 22. Google App Engine Datastore - Ключи против идентификаторов
- 23. Google App Engine Datastore не-составные индексы
- 24. Datastore One-to-Many Google App Engine
- 25. Google App Engine - Datastore get_or_insert key_name confusion
- 26. App Engine copy datastore
- 27. Google App Engine: Проблема с Datastore Запрос
- 28. Google App Engine Datastore получить значение свойства
- 29. Простое объяснение Google App Engine NDB Datastore
- 30. Google App Engine Datastore проблема запрос
См http://code.google.com/appengine/docs/python/blobstore/overview.html#Writing_Files_to_the_Blobstore; теперь вы можете программно писать в blobstore с помощью API файлов. (обратите внимание: это на той же странице, на которой написано, что вы не можете создавать программные блокировки, так что для поддержания актуальности документов:)) – geoffspear