Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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 谷歌应用引擎如何报告文件上传的进度_Python_Google App Engine_Progress Bar - Fatal编程技术网

Python 谷歌应用引擎如何报告文件上传的进度

Python 谷歌应用引擎如何报告文件上传的进度,python,google-app-engine,progress-bar,Python,Google App Engine,Progress Bar,我一直在尝试将ajax风格的文件上传组件(如dojox文件上传组件)与google app engine结合使用,并且有一个进度条 javascript方面还不错,但我想知道如何在服务器端组织事情 在google app engine中上传数据时,是否有可能访问这些数据,或者使用BaseHTTPServer?然后,我可以从客户那里进行投票 即使无法实现进度,至少能够终止一个大文件并让用户知道它太大了,而不需要用户上传1MB(谷歌应用程序引擎限制),然后发现它太大了,这将是一件好事 还有一些类似的

我一直在尝试将ajax风格的文件上传组件(如dojox文件上传组件)与google app engine结合使用,并且有一个进度条

javascript方面还不错,但我想知道如何在服务器端组织事情

在google app engine中上传数据时,是否有可能访问这些数据,或者使用BaseHTTPServer?然后,我可以从客户那里进行投票

即使无法实现进度,至少能够终止一个大文件并让用户知道它太大了,而不需要用户上传1MB(谷歌应用程序引擎限制),然后发现它太大了,这将是一件好事

还有一些类似的问题:

下面的GoogleAppEngine python代码只是一个简单文件上传的基本post处理程序(工作正常),但我正在寻找一个较低级别的操作。当post处理程序获取该文件时,该文件已全部上载

在LAMP堆栈上,您可以轮询监视临时文件大小增长的服务器端脚本。当文件从临时文件夹中移出时,您知道其已完成。通过使用这种方法,您可以在不使用flash的情况下查看多个文件的进度,我不知道如何使用google app engine执行相同的操作

class fileupload(webapp.RequestHandler):
"""
"""
def post(self):
    if "image" in self.request.arguments():
        content = "<html><body>Error</body></html>"      
        form = self.request.params['image']
        logging.info(form)
        try:
            filename = form.filename
            siz = len(form.value)

            ###--- Show data
            logging.info("Filename: %s" % form.filename)
            logging.info("Size: %s" % siz)

            content = "<html><body>File has been uploaded Name: %s Size: %s</body></html>" % (filename, siz)
            logging.info("DONE")
        except:     
            logging.info("Error: bad form or something like that")

        logging.info("writing out response")
        self.response.out.write(content)
类文件上载(webapp.RequestHandler):
"""
"""
def post(自我):
如果self.request.arguments()中的“image”:
content=“Error”
form=self.request.params['image']
logging.info(表格)
尝试:
filename=form.filename
siz=len(形式值)
###---显示数据
logging.info(“文件名:%s”%form.Filename)
logging.info(“大小:%s”%siz)
content=“文件已上载名称:%s大小:%s”%(文件名,大小)
logging.info(“完成”)
除:
logging.info(“错误:坏表单或类似的东西”)
logging.info(“写出响应”)
self.response.out.write(内容)

您可以使用限制客户端站点上的文件大小

它是一个带有javascript api的flash组件,公开了flash上传功能。 在客户端浏览器中检查文件大小。(功能上)


该库还有其他功能,如进度条,请在主页上查看完整的功能列表。

您可以使用限制客户端站点上的文件大小

它是一个带有javascript api的flash组件,公开了flash上传功能。 在客户端浏览器中检查文件大小。(功能上)


该库还提供了其他功能,如进度条,查看其主页以获取完整的功能列表。

在请求完成之前,App Engine不会从请求处理程序返回任何数据,因此任何进度检查都必须在客户端完成。IIRC在上传完成之前,您的请求甚至不会加载到应用程序服务器。

在请求完成之前,应用程序引擎不会从请求处理程序返回任何数据,因此任何进度检查都必须在客户端完成。IIRC在上传完成之前,您的请求甚至不会加载到应用程序服务器。

这不适用于所有浏览器,但这是一种通过AJAX进行多个文件上传的好方法:

function upload_files(entityKey, files, url, progress_callback) {
  var xhr = new XMLHttpRequest(), formData = new FormData();
  xhr.upload['onprogress'] = progress_callback;

  formData.append('entityKey', entityKey);
  $.each(files, function(i, file) { formData.append('file[]', file);});

  xhr.open("post", url, true);
  xhr.setRequestHeader("Cache-Control", "no-cache");
  xhr.send(formData);
}

entityKey是服务器上的参数示例。“files”参数来自文件类型输入表单元素的“files”属性(作为一个数组支持多个文件)。“progress_callback”参数是一个函数,它接受一个对象,该对象至少有一个“loaded”和一个“total”字段(单位为字节)。它不关心服务器响应。

这不适用于所有浏览器,但这是通过AJAX进行多个文件上传的一种好方法:

function upload_files(entityKey, files, url, progress_callback) {
  var xhr = new XMLHttpRequest(), formData = new FormData();
  xhr.upload['onprogress'] = progress_callback;

  formData.append('entityKey', entityKey);
  $.each(files, function(i, file) { formData.append('file[]', file);});

  xhr.open("post", url, true);
  xhr.setRequestHeader("Cache-Control", "no-cache");
  xhr.send(formData);
}

entityKey是服务器上的参数示例。“files”参数来自文件类型输入表单元素的“files”属性(作为一个数组支持多个文件)。“progress_callback”参数是一个函数,它接受一个对象,该对象至少有一个“loaded”和一个“total”字段(单位为字节)。它不关心服务器的响应。

谢谢,我喜欢swfupload的外观,还有其他一些不错的flash上传,我希望ajax解决方案能够正常工作。谢谢,我喜欢swfupload的外观,还有一些不错的flash上传,我希望ajax解决方案能够正常工作。谢谢,哦,好吧,我想这是app engine的局限之一。不,没有客户端助手应用程序,任何基于HTTP的上传都不能报告进度。在回答中澄清这不是app engine独有的可能是个好主意,这只是HTTP的工作方式。谢谢,哦,好吧,我想这是app engine的局限之一。不,如果没有客户端助手应用程序,任何基于HTTP的上载都无法报告进度。在回答中澄清这不是App Engine独有的,这只是HTTP的工作方式可能是一个好主意。