![](/img/trans.png)
[英]Python: How to upload files to a specific folder in Google Drive using folderId
[英]Upload files to a specific Google Drive folder using python
我正在創建一個簡單的網絡應用,該應用使用Auth2.0身份驗證將一些文件保存在我的Google雲端硬盤中。 當我使用下面的代碼時,一切都工作正常,但在這里有些麻煩。 第一個是將內容保存在另一個指定的文件夾中。 下面的代碼保存在根文件夾中的文件,我想不出why.The upload_folder_id顯然具有良好的價值,我這里省略。
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
try:
import argparse
flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
flags = None
SCOPES = 'https://www.googleapis.com/auth/drive.file'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store, flags) \
if flags else tools.run(flow, store)
DRIVE = build('drive', 'v3', http=creds.authorize(Http()))
upload_folder_id = <my_folder_id>
FILES = (('hello.txt', None)) # More files will be added after
for filename, mimeType in FILES:
metadata = {'name': filename}
if mimeType:
metadata['mimeType'] = mimeType
''' I tried all this possibilities too
metadata['parentId'] = upload_folder_id
metadata['folderId'] = upload_folder_id
'''
metadata['parents'] = [{'id': upload_folder_id}]
res = DRIVE.files().create(body=metadata, media_body=filename).execute()
if res:
print('Uploaded "%s" (%s)' % (filename, res['mimeType']))
第二步是身份驗證步驟。 第一次連接該應用程序時,我被重定向到一個Google Web頁面,並在其中授予了API訪問權限。 有沒有一種方法,而無需通過網絡瀏覽器來驗證訪問權限? (對於我的本地測試,這樣做很好,但是我將無法在生產服務器中執行此操作)。
下面的代碼將文件保存在根文件夾中,我不知道為什么.upload_folder_id顯然具有很好的價值,在此省略。
parents
應該是一個字符串數組,因此不需要id
屬性; 只需指定父folderId,我認為您很好
有沒有一種方法,而無需通過網絡瀏覽器來驗證訪問權限?
同意頁面對於用戶的身份驗證過程至關重要,我認為在這里抓取不是解決方案。 我可以想到的另一種選擇是讓您使用服務帳戶,這是服務器到服務器的實現,因此用戶無需登錄。 盡管這里的缺點是用戶不擁有數據,服務帳戶卻擁有數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.