2014-12-09 2 views
2

Я хочу сделать так, чтобы пользователи загружали изображение и делали демонстрацию для этого uplaod и читали API GAE Blobstore.Google App Engine загрузить картинку Blobstore

Моя проблема заключается в отправке файла изображения, я получаю сообщение об ошибке AttributeError: объект UploadHandlerDemo не имеет атрибута 'get', но класс Blob уже создан в хранилище данных. Как я могу справиться с этой проблемой?

Вот мой фрагмент кода:

class FileUploadDemo(webapp2.RequestHandler): 
    def get(self): 
     from google.appengine.ext import blobstore 
     upload_url = blobstore.create_upload_url('/admin/upload') 
     logging.info(upload_url) 
     blob = blobstore.BlobInfo.all().get() 
     logging.info(blob.filename) 
     content = {"upload_url":upload_url} 
     HelperGlobal.render_template(self, 'blobstoreDemo.html', content) 

Вот мой UploadHandler:

from google.appengine.ext.webapp import blobstore_handlers 
class UploadHandlerDemo(blobstore_handlers.BlobstoreUploadHandler): 
    def post(self): 
     upload_files = self.get.uploads('file') 
     blob_info = upload_files[0] 
     logging.info(blob_info) 
     self.redirect('/admin/serve/%s' % blob_info.key()) 

В пути датастора я имел BlobInfo и BlobUplaodSessions и они кажущейся штраф.

В html-части я конвертирую пример GAE Blobstore в отдельный HTML-код, который обрабатывается с помощью данных upload_url с помощью JINJA.

Вот мой HTML код для простой демонстрации:

<html> 
<body> 
<form action="{{upload_url}}" method="POST" enctype="multipart/form-data"> 
Upload File: <input type="file" name="file" id="UniqueFile"> 
      <br> 
      <input type="submit" name="submit" value="Submit"> 
</form> 
</body> 
</html> 

При нажатии кнопки отправки, он создает BlobInfo объект с соответствующим изображением, но сервер получает ошибку с кодом 500, и говорит:

AttributeError: Объект 'UploadHandlerDemo' не имеет атрибута 'get'

У меня было много попыток и просмотр stackoverflow, но не смог получить решение.

+0

это позор, что есть ошибка синтаксиса в классе UploadDemoHandler в с elf.get.uploads, он должен быть self.get_uploads, и этот демонстрационный код работает. Никаких дальнейших ответов не требуется, но это может быть полезно для начинающих, таких как я. –

ответ

0

AttributeError: объект 'UploadHandlerDemo' не имеет атрибута 'получить'

Это, вероятно, имея в виду эту линию:

upload_files = self.get.uploads ('файл')

показать нам остаток вашего кода от UploadHandlerDemo, пожалуйста.

У вас есть настройка атрибута get? Я не совсем уверен, что вы пытаетесь сделать с self.get.uploads ('file'). Вы вызываете объект get в self (UploadHandlerDemo)? Объект get должен владеть методом uploads (file).

1

Я думаю: upload_files = self.get.uploads ('файл')

должно быть: upload_files = self.get_uploads ('файл')

1

вы должны заменить этот

upload_files = self.get.uploads('file') 

в

upload_files = get_uploads('file') 
Смежные вопросы