Python 谷歌应用引擎如何报告文件上传的进度
我一直在尝试将ajax风格的文件上传组件(如dojox文件上传组件)与google app engine结合使用,并且有一个进度条 javascript方面还不错,但我想知道如何在服务器端组织事情 在google app engine中上传数据时,是否有可能访问这些数据,或者使用BaseHTTPServer?然后,我可以从客户那里进行投票 即使无法实现进度,至少能够终止一个大文件并让用户知道它太大了,而不需要用户上传1MB(谷歌应用程序引擎限制),然后发现它太大了,这将是一件好事 还有一些类似的问题: 下面的GoogleAppEngine python代码只是一个简单文件上传的基本post处理程序(工作正常),但我正在寻找一个较低级别的操作。当post处理程序获取该文件时,该文件已全部上载 在LAMP堆栈上,您可以轮询监视临时文件大小增长的服务器端脚本。当文件从临时文件夹中移出时,您知道其已完成。通过使用这种方法,您可以在不使用flash的情况下查看多个文件的进度,我不知道如何使用google app engine执行相同的操作Python 谷歌应用引擎如何报告文件上传的进度,python,google-app-engine,progress-bar,Python,Google App Engine,Progress Bar,我一直在尝试将ajax风格的文件上传组件(如dojox文件上传组件)与google app engine结合使用,并且有一个进度条 javascript方面还不错,但我想知道如何在服务器端组织事情 在google app engine中上传数据时,是否有可能访问这些数据,或者使用BaseHTTPServer?然后,我可以从客户那里进行投票 即使无法实现进度,至少能够终止一个大文件并让用户知道它太大了,而不需要用户上传1MB(谷歌应用程序引擎限制),然后发现它太大了,这将是一件好事 还有一些类似的
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的工作方式可能是一个好主意。