Blobstore上传 + Ajax/替代方案

3
以下代码完美运行。我唯一的担忧是我想把它转换成 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>

查看此答案 - Kevin P
@Nick Johnson,抱歉没有加问号。 - MrCooL
1个回答

5

浏览一些关于AJAX上传的JavaScript方案 - 具体来说,Plupload可以与App Engine blobstore搭配使用,为您提供多文件上传支持、AJAX上传以及上传小部件/进度条等选项。

事实上,@NickJohnson发布了一篇完整的博客文章,引导您完成这些步骤。

主要内容如下:

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;
        },
    });

如果需要更详细的说明,请查看该博客文章。Nick有一个非常棒的指南,肯定会帮助我配置Plupload + Blobstore。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接