2014-11-06 119 views
1

因此,我正在嘗試將文件上傳到用戶指定的特定Google雲端硬盤文件夾。以下是我嘗試過的代碼。我得到的文件夾ID,我嘗試將文件發佈到文件夾,但我得到一個404 Not Found錯誤。Python:如何使用folderId將文件上傳到Google雲端硬盤中的特定文件夾

def post_file(self, files_to_send, config = {}): 
    if config: 
    if type(config) is str: 
     config = literal_eval(config) 
    path_id = config.get('path') 
    for file_to_send in files_to_send: 
    filename = file_to_send.name.split('/')[-1] 
    status = self.call.post('https://www.googleapis.com/upload/drive/v2/files?uploadType=media/' + str(path_id) + "/children") 

使用Drive API文檔中的接口,我能夠使用相同的folderID獲取數據,但我無法發佈(即使使用該接口)。 Files_to_send是包含我需要上傳到特定文件夾的所有文件的列表,並且config包含文件夾路徑。

我需要幫助瞭解我做錯了什麼。我已閱讀文檔並查看了其他答案,但我沒有找到解決方案。當我沒有指定文件夾ID時,虛擬文件​​不會上傳到我的驅動器,但它不會上傳我想要的文件,並且在指定文件夾ID時不會上傳任何內容。

從本質上講,我需要幫助插入一個文件進入Google雲端硬盤中的特定文件夾。

謝謝!

回答

3

我相信你應該發送一個元數據JSON包括一個parents提交。 喜歡的東西:

{ 
    "parents" : [path_id] 
} 

你可以在這裏試試這個API:https://developers.google.com/drive/v2/reference/files/insert

+0

我嘗試使用API​​,但是我仍然獲得了「404未找到」。 這是以下回復: 「code」:404, 「message」:「文件未找到:」 – AlvinJ 2014-11-06 15:58:17

+0

您使用的是什麼確切的URL? – 2014-11-06 16:00:01

+0

什麼意思是確切的URL?你的意思是文件夾的ID? – AlvinJ 2014-11-06 16:02:19

0

我實現的方式把文件中的特定文件夾是通過傳遞以下信息的元數據。

這裏<someFolderID>信息可以被檢索爲: 1.去谷歌https://drive.google.com/drive/folders/

{ 
"parents":[ 
"id": "<someFolderID>", 
"kind": "drive#file" 
] 
} 
1

需要兩個步驟後駕駛 2.選擇文件夾 3.觀察地址欄就會有一定的價值要解決這個問題:

  1. 獲取文件夾ID:

    folder_list = self.drive.ListFile({'q': "trashed=false"}).GetList() 
        for folder in folder_list: 
         print 'folder title: %s, id: %s' % (folder['title'], folder['id']) 
    
  2. 發現ID所需的文件夾後,使用本功能:

    def upload_file_to_specific_folder(self, folder_id, file_name): 
        file_metadata = {'title': file_name, "parents": [{"id": folder_id, "kind": "drive#childList"}]} 
        folder = self.drive.CreateFile(file_metadata) 
        folder.SetContentFile(file_name) #The contents of the file 
        folder.Upload() 
    
相關問題