Google云端硬盘Api批处理 - 获取多个文件上传的结果

时间:2017-07-18 21:39:07

标签: python google-api google-drive-api google-python-api

这个问题是基于python制定的,但核心问题一般涉及Drive API。

我有以下python代码用于上传部署批处理的多个文件:

batch = service.new_batch_http_request(callback=f_delete_file_batch_callback)
for item in files_list:
    filename = item.name
    file_metadata = {'title' : filename}
    fo = open(filename, "w+b")
    fo.write(item.file.read())
    media = MediaFileUpload(...)
    batch.add(service.files().insert(body=file_metadata, media_body=media))                              

http =  credential.authorize(httplib2.Http())
batch.execute(http = http)
uploaded_files = ... # Here's the question. How do I get new files?
return render(request, 'my_template.html', {'files': uploaded_files}

问题是我不明白如何获取新上传的文件,以便我可以将新行传递给ajax并在客户端呈现它们:

my_template.html:

{% for item in files.items %}
    <tr>
        <td>{{item.title}}</td>
        <td>{{item.modifiedDate}}</td>
    </tr>
{% endfor %}

的javascript:

$.post(url, data, function(){
    $table.append(response)
});

1 个答案:

答案 0 :(得分:1)

从内存中,批处理请求的响应是新创建的文件的文件资源数组。实际上它是一个多部分mimetype,每个组件请求都有一个部分。

在python库周围(我讨厌库),它看起来像是为每个body部分调用的构造函数的可选回调。在您的情况下,您已将其定义为callback=f_delete_file_batch_callback

Soooo,我希望用每个插入文件的文件对象调用这个回调。

默认情况下,文件对象只包含title,id和mimetype。如果您需要modifiedDate,则需要将该(或*)添加到fields参数。