在 python 中将图像上传到谷歌驱动器

问题描述 投票:0回答:1

我尝试用 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)
python google-drive-api
1个回答
0
投票

这里有两个问题。首先是你的创造

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 下载文件然后上传它。

© www.soinside.com 2019 - 2024. All rights reserved.