Проблема с получением данных от <form> - PullRequest
0 голосов
/ 25 августа 2010

HTML:

<form enctype="multipart/form-data" action="/convert_upl" method="post">          
         Name:  <input type="text" name="file_name">
         File:  <input type="file" name="subs_file"> 
        <input type="submit" value="Send">
</form>

Python (Google App Engine):

if self.request.get('file_name'):
                    file_name = self.request.get('file_name')

Моя проблема в том, что я не получаю данные из текстового ввода file_name. Я знаю, что проблема в том, что он существует в форме enctype = "multipart / form-data", но я не знаю, как ее решить - я имею в виду, как одним нажатием получить файл и строку из ввода кнопки отправки.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 25 августа 2010

Пример кода Загрузка отлично работает для меня. Вы пытались использовать этот код точно? У вас это работает, или какие проблемы вы видите?

Как вы увидите, в этом примере есть форма с той же кодировкой, которую вы используете:

      <form action="/sign" enctype="multipart/form-data" method="post">
        <div><label>Message:</label></div>
        <div><textarea name="content" rows="3" cols="60"></textarea></div>
        <div><label>Avatar:</label></div>
        <div><input type="file" name="img"/></div>
        <div><input type="submit" value="Sign Guestbook"></div>
      </form>

в HTML немного осторожнее, чтобы правильно использовать теги label для отображения меток полей, но это влияет только на внешний вид формы при визуализации в браузере.

Код Python также похож на то, что вы показываете (для крошечного susbset, который вы показываете):

def post(self):
    greeting = Greeting()
    if users.get_current_user():
        greeting.author = users.get_current_user()
    greeting.content = self.request.get("content")
    avatar = self.request.get("img")
    greeting.avatar = db.Blob(avatar)
    greeting.put()
    self.redirect('/')

и, конечно, URL /sign направлен на класс, чей метод do_post мы только что показали.

Итак, если этот код работает, а ваш - нет, в чем разница? Не в той части, которую вы нам показали, так что, должно быть, в некоторых частях вы не показывали ... вы можете воспроизвести часть о данном примере кода от Google, которая работает просто отлично?

0 голосов
/ 25 августа 2010

Вы используете метод POST для отправки данных, но затем пытаетесь получить их методом GET.

вместо

self.request.get('file_name')

сделать что-то вроде

self.request.post('file_name')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...