Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中使用goog.net.IframeIo将文件上载到Blobstore?_Python_Google App Engine_Blobstore_Google Closure - Fatal编程技术网

如何在Python中使用goog.net.IframeIo将文件上载到Blobstore?

如何在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

在这里,我尝试将文件异步上传到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 = 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将处理上传,然后发送到您自己的方法。