<form action="/fileupload" enctype="multipart/form-data" method="post">
<label>Title<input name="name"></label>
<label>Author<input name="author"></label>
<label>Year <input name="year"></label>
<label>Link <input name="link"></label>
<input type="file" name="file">
<input type="submit">
</form>
问题是为什么self.get_uploads()
在self.request.get('file')
工作时(或我建议它有效)时不返回任何内容
class FileUploadHandler(H.Handler,blobstore_handlers.BlobstoreUploadHandler):
def post(self):
name=self.request.get('name')
if name:
logging.error(name)
author=self.request.get('author')
if author:
logging.error(author)
year =self.request.get('year')
if year and year.isdigit():
year=int(year)
f =self.get_uploads('file')#FILE NOT FOUND
#f=self.request.get('file') # WORKS FINE
if not f:
logging.error("FILE NOT FOUND")
self.redirect("/files")
我查看了sample app,但他们也使用了self.request.get('file')
答案是你应该为blob创建上传网址。
答案 0 :(得分:1)
您需要get_uploads()[0]
或姓名。
上传处理程序的简单示例(比较并在代码中进行适当的更改):
<form name="myform" action="{{ upload_url }}" method="post" enctype="multipart/form-data">
<h1>Select an Image</h1>
<input name="file" type="file"><br>
<input type="submit" value="Upload">
</form>
处理程序:
class UploadBlobsHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
try:
upload = self.get_uploads()[0]
logging.info(upload)
url = images.get_serving_url(upload)
# Do something with it.
except:
self.redirect('/uploadform/?error', abort=True)
self.redirect('/uploadform/?success&image_url=' + url)
如何使用blobstorrhandlers上传的示例:gae-image-upload-example
答案 1 :(得分:1)
这是我问题的完整解决方案:
<form action="{{upload_url}}" enctype="multipart/form-data" method="post">
<label>Title<input name="name"></label>
<label>Author<input name="author"></label>
<label>Year <input name="year"></label>
<label>Link <input name="link"></label>
<input type="file" name="file">
<input type="submit">
</form>
其中upload_url =blobstore.create_upload_url('/fileupload',max_bytes_per_blob=10*1000*1000)
并且接下来要处理请求的代码:
upload=self.get_uploads('file')[0]