从<form> </form>接收数据时出现问题

时间:2010-08-25 13:45:42

标签: python html google-app-engine cgi

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 :(得分:0)

您正在使用POST方法发送数据,但后来尝试使用GET方法获取数据。

而不是

self.request.get('file_name')

做类似

的事情
self.request.post('file_name')

答案 1 :(得分:0)

uploading示例代码适用于我。您是否尝试过使用该代码?它对你有用吗,或者你看到了什么问题?

正如您将看到的那样,该示例的表单与您正在使用的编码相同:

      <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('/')

当然,/sign网址定向到我们刚刚展示了do_post方法的类。

所以,如果这段代码有效,而你的代码没有,那么区别在哪里?不是在你向我们展示的部分,所以它必须在某些部分你没有显示...你能重现关于这个示例代码的部分来自Google工作得很好吗?