如何在Python中使用goog.net.IframeIo将文件上载到Blobstore?
在这里,我尝试将文件异步上传到blobstore。以下是我迄今为止所做的工作: html文件如何在Python中使用goog.net.IframeIo将文件上载到Blobstore?,python,google-app-engine,blobstore,google-closure,Python,Google App Engine,Blobstore,Google Closure,在这里,我尝试将文件异步上传到blobstore。以下是我迄今为止所做的工作: html文件 <form id="my_form" enctype="multipart/form-data" method="POST" action="/partner"> <input type="file" id="my_file" name="my_file"/> </form> my.Project.prototype.onFileUpload = f
<form id="my_form" enctype="multipart/form-data" method="POST"
action="/partner">
<input type="file" id="my_file" name="my_file"/>
</form>
my.Project.prototype.onFileUpload = function(e) {
var uploadForm = /** @type {HTMLFormElement} */ (
goog.dom.getElement('my_form'));
var iframeIo = new goog.net.IframeIo();
goog.events.listen(iframeIo, goog.net.EventType.COMPLETE, function() { alert('request complete'); });
iframeIo.sendFromForm(uploadForm);
class MyHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
logging.info(self.request) // I can see my file in this line's output
upload_files = self.get_uploads('my_file')
logging.info(upload_files) //upload_files come out to be an empty array
blob_info = upload_files[0]
self.redirect('/partner/serve/%s' % blob_info.key())
python代码
<form id="my_form" enctype="multipart/form-data" method="POST"
action="/partner">
<input type="file" id="my_file" name="my_file"/>
</form>
my.Project.prototype.onFileUpload = function(e) {
var uploadForm = /** @type {HTMLFormElement} */ (
goog.dom.getElement('my_form'));
var iframeIo = new goog.net.IframeIo();
goog.events.listen(iframeIo, goog.net.EventType.COMPLETE, function() { alert('request complete'); });
iframeIo.sendFromForm(uploadForm);
class MyHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
logging.info(self.request) // I can see my file in this line's output
upload_files = self.get_uploads('my_file')
logging.info(upload_files) //upload_files come out to be an empty array
blob_info = upload_files[0]
self.redirect('/partner/serve/%s' % blob_info.key())
任何关于如何从请求对象上传文件的指针。
可以找到关于blobstore的google教程提供的python代码
现在我被卡住了。我相信如果我能用python代码获取该文件,我就能上传它。
任何指针都会非常有用
谢谢,Mohit这不是关于iframeio的真正问题,只是关于在AppEngine中上传的问题。您缺少的是,您应该首先在GET方法中创建一个要上载到的URL,并将其用作表单的
操作参数。请参阅AppEngine文档中的
因此,在您的情况下,您需要上传url=blobstore。创建上传url(“/partner”)
,并在模板中添加
,等等。感谢Daniel的回复。在示例应用程序中,他们创建URL是因为他们首先希望用户登录到MainHandler中,在MainHandler中创建表单以方便文件上载。如果您看到该表单,那么他们已经提供了创建的URL。在我的情况下,我不想要主处理器。因此,我在HTML表单中有action=“URL”。此外,我还可以成功地命中所需的处理程序。唯一的问题是从请求对象中取出文件。我希望这能进一步澄清我的问题。我不理解你的评论。您需要发布到create\u URL
返回的URL,否则上载将无法工作。AppEngine将处理上传,然后发送到您自己的方法。