2017-07-18 50 views
0

這個問題是基於python制定的,但核心問題一般涉及Drive API。Google 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

從內存中,批處理請求的響應是新創建文件的文件資源數組。實際上它是一個多部分MIME類型,每個組件請求都有一部分。

圍繞python庫(呃,我討厭圖書館),看起來像是有一個可選的回調構造函數,每個身體部分被調用。在你的情況下,你已經將此定義爲callback=f_delete_file_batch_callback

Soooo,我希望這個回調用每個插入文件的文件對象來調用。

默認情況下,文件對象只包含title,id和mimetype。如果您想要修改日期,則需要將該(或*)添加到fields參數中。

+0

你測試過了嗎?在我的應用程序中,它返回None。你使用v2還是v3? –

+1

它在v2和v3之間沒有改變。以下是https://developers.google.com/drive/v3/web/batch文檔,其中確認:「服務器的響應是具有多部分/混合內容類型的單個標準HTTP響應;每個部分都是對其中一個響應批量請求中的請求以與請求相同的順序進行。「 Python庫對此做的是任何人的猜測。您可能需要查看源代碼才能弄清楚。這就是爲什麼我建議不要使用庫 - 它們會導致比解決問題更多的問題。 – pinoyyid

+1

您可以在https://groups.google.com/forum/#!forum/google-api-python-client上發佈您的問題。這樣圖書館作者應該看到它。 – pinoyyid

相關問題