我尝试用 python 将图像上传到我的驱动器 我在输出中得到了 ID为
'1ZWfY4n473bD58RpqSX-HBeb8H6pa63bc'
的图像已上传到Google云端硬盘上ID为“your_folder_id”的文件夹
但是当我去我的驱动器时我没有找到任何东西。
代码示例:
通过加载 client_secrets.json 文件并创建凭证对象来设置身份验证:
creds = None
SCOPES = ['https://www.googleapis.com/auth/drive.file']
creds = service_account.Credentials.from_service_account_file(
'agricultureproject.json', scopes=SCOPES)
创建一个将图像上传到 Google Drive 的函数:
def upload_image_to_drive(image_url, folder_id):
try:
# Create a Drive API client
service = build('drive', 'v3', credentials=creds)
file_metadata = {'name': 'IdentityDiagram.PNG'}
media = MediaFileUpload('IdentityDiagramPNG.PNG', mimetype='image/jpeg')
# Upload the image to Google Drive
file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()
print(f"Image with ID '{file.get('id')}' was uploaded to the folder with ID '{folder_id}' on Google Drive")
except HttpError as error:
print(f"An error occurred: {error}")
file = None
return file
调用upload_image_to_drive函数,输入你要上传的图片的URL和你要上传到的文件夹的ID:
folder_id = 'your_folder_id'
image_url = 'https://i5.walmartimages.com/asr/9e391b9c-462a-4ca6-8832-5e56159f999d_1.aedccea75551f143d7ab991716ec8e05.jpeg'
upload_image_to_drive(image_url, folder_id)
这里有两个问题。首先是你的创造
file_metadata = {'name': 'IdentityDiagram.PNG'}
media = MediaFileUpload('IdentityDiagramPNG.PNG', mimetype='image/jpeg')
# Upload the image to Google Drive
file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()
您没有在那里设置父目录,因为该文件将进入当前经过身份验证的用户的根文件夹。
您的第二个问题是您忘记了服务帐户不是您。您已将文件上传到服务帐户拥有的根目录。
做一个 file.list,你会看到该文件已上传到服务帐户 google drive 帐户。
最后请记住,你上传的文件需要在你上传的机器上,所以 image_url 不会工作,除非你先从内存中的 URL 下载文件然后上传它。