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”中,但我不知道如何解决它 - 我的意思是如何通过一次单击从输入接收文件和字符串提交按钮。
提前致谢。
答案 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工作得很好吗?