2013-04-16 125 views
0

我試圖使用Python API從Google Drive下載文件。我正在瀏覽文檔,我看到一個def需要兩個參數,服務實例和Drive File實例。我沒有看到任何地方如何創建一個Drive File實例傳遞給def。這應該怎麼做?也許我只是在這裏沒有理解簡單的東西,這是一個很好的可能性...使用Google Drive API下載文件

回答

4

我不知道你提到了文檔頁面,但是,爲了下載一個文件,獲取其元數據並作出對其downloadUrl的認證請求。

f = service.files().get(fileId=file_id).execute() 
resp, content = service._http.request(f.get('downloadUrl')) 
+0

以下是我參考的內容:https://developers.google.com/drive/v2/reference/files/get。你會看到一個名爲download_file的def,它有兩個參數。 – user165222

+0

'drive_file = service.files()。get(fileId = file_id).execute()',希望有幫助。文檔有點奇怪,我們應該修復它。謝謝。 –

2

我同意Burcu的回答:Google Drive「get」方法將只返回文件的元數據。如果您希望檢索文件的內容,那麼您應該使用它的downloadUrl屬性下載它,如Burcu所示。因此:1.獲取元數據,2.提取downloadUrl屬性,以及3.使用http請求下載。

至於你的問題,在「Drive文件實例傳遞給DEF」實際上是從憑據建成,因此,例如:

/** 
* Returns the credentials of the user in the session. If user is not in the 
* session, returns null. 
* @param req Request object. 
* @param resp Response object. 
* @return  Credential object of the user in session or null. 
*/ 
protected Credential getCredential(HttpServletRequest req, 
    HttpServletResponse resp) { 
    String userId = (String) req.getSession().getAttribute(KEY_SESSION_USERID); 
    if (userId != null) { 
    return credentialManager.get(userId); 
    } 
    return null; 
}; 

/** 
* Build and return a Drive service object based on given request parameters. 
* @param credential User credentials. 
* @return Drive service object that is ready to make requests, or null if 
*   there was a problem. 
*/ 
protected Drive getDriveService(Credential credential) { 
    return new Drive.Builder(TRANSPORT, JSON_FACTORY, credential).build(); 
} 

有關完整的說明可以參考:https://developers.google.com/drive/web/examples/java#putting_together_the_pieces_getting_a_complete_set_of_credentials_for_every_request

相關問題