Blobstore上传+ Ajax / Alternative

时间:2011-08-25 17:22:42

标签: ajax google-app-engine blobstore

以下代码完美无缺。我唯一担心的是,我想将下面的转换为AJAX /替代,这样就不需要刷新整个页面来提交此请求。

如果可能,还要包括加载进度条等。

<form action="{{ upload_url }}" method="POST" enctype="multipart/form-data">

        Upload File: <input type="file" name="file"> <br> 
        <input type="submit" name="submit" value="Submit"> 

        <input type="hidden" name="data1" value="{{ data1 }}">
        <input type="hidden" name="data1" value="{{ data2 }}">

</form>

1 个答案:

答案 0 :(得分:5)

看一下JSAX上传的JS解决方案 - 具体来说,Plupload可以连接到App Engine blobstore,为您提供多上传支持,AJAX上传以及上传小部件/进度条等选项。

事实上,@NickJohnson有一个完整的blog post指导您完成这些步骤。

它的要点是:

1)下载并安装Plupload

2)创建一个返回生成的上传URL的处理程序。像这样:

from google.appengine.ext import webapp
from google.appengine.api import blobstore

class BlobstoreURLResponder(webapp.RequestHandler):

    """ Mapped to the URL /get_upload_url """

    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.request.out.write(blobstore.create_upload_url('/blobstore/passthrough'))

3)在上传文件之前连接Plupload以获取blob上传URL

uploader.bind('UploadFile', function(up, file) {
    $.ajax({
        url: '/get_upload_url',
        async: false,
        success: function(data) {
          up.settings.url = data;
        },
    });

有关更详细的说明,请查看该博客文章。尼克有一个很棒的演练,肯定帮我设置了Plupload + Blobstore。