Как передать массивы изображений HTML-форм в Google App Engine (Python)? - PullRequest
0 голосов
/ 02 августа 2011

Я использую реализацию Python Google App Engine. Когда я пытаюсь передать массив тегов ввода изображения из HTML-формы, я не могу подобрать его в контроллере Python.

HTML:

<form action="/addImages" method="post" enctype="multipart/form-data">
  <input type="file" name="images" />
  <input type="file" name="images" />
  <input type="file" name="images" />
</form>

Питон:

class AddImages(webapp.RequestHandler):
def post(self):
    images = self.request.get_all('images')

    for img in images:
        if img != None:
            img_entity.blob = db.Blob(img)

    self.response.out.write("Upload Succeeded")

Когда я пытаюсь это сделать, я получаю страшную ошибку Unicode / Str:

TypeError: Blob() argument should be str instance, not unicode

в строке, где:

db.Blob(img)

Я следовал большинству уроков, но ни один из них, казалось, не обсуждал этот конкретный вопрос.

1 Ответ

3 голосов
/ 02 августа 2011

Вам необходимо включить

enctype="multipart/form-data"

атрибут в теге формы, см., Например, http://www.mail-archive.com/google-appengine@googlegroups.com/msg03314.html. Поиск вашей ошибки в Google выявляет несколько других случаев проблемы.

Если у вас все еще есть проблемы после добавления enctype, просто попробуйте db.Blob(str(img)) и / или db.Blob(img.encode('utf-8')), как также предложено потоками, подобными приведенным выше. Вы также можете попробовать images =self.request.str_GET['images'] или что-то подобное.

...