Python Google Drive API,是将数据上传到内存中,而不是文件上传到磁盘上?

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

我一直在搜索有关我的问题的论坛都没有成功。

我正在尝试使用Google Drive Python API将内存中的文件上传到Google Drive。但是,我看到的所有示例都使用磁盘上具有特定文件路径和名称的文件。

 service = build('drive', 'v3', credentials=creds)

    media = MediaFileUpload(
        'MyFile.jpeg',
        mimetype='image/jpeg',
        resumable=True
    )
    request = service.files().create(
        media_body=media,
        body={'name': 'MyFile', 'parents': ['<your folder Id>']}
    )
    response = None
    while response is None:
        status, response = request.next_chunk()
        if status:
            print("Uploaded %d%%." % int(status.progress() * 100))
    print("Upload Complete!")

但是,我想做这样的事情:

with open('MyFile.jpeg', 'rb') as FID: 
	fileInMemory = FID.read()
	
myGDriveUpload(fileInMemory)

#Pass jpeg file that has been read into memory
#to Google Drive for upload.

该文件将由于我正在执行的操作而在内存中,因此无需保存到磁盘,使用其文件路径上传文件,然后删除已临时保存在磁盘上的文件。

如何将文件直接保存在内存中而不必将其保存到磁盘并使用文件路径和名称呢?

谢谢

python python-3.x google-drive-api
1个回答
0
投票
  • 您想使用python的googleapis将内存中的数据上传到Google云端硬盘。
  • 您想使用以下脚本的fileInMemory

    with open('MyFile.jpeg', 'rb') as FID: 
        fileInMemory = FID.read()
    
  • 您已经能够使用Drive API上传文件。

如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。

在此答案中,我使用“ Class MediaIoBaseUpload”代替“ Class MediaFileUpload”。

示例脚本:

service = build('drive', 'v3', credentials=creds)

with open('MyFile.jpeg', 'rb') as FID:
    fileInMemory = FID.read()

media = MediaIoBaseUpload(io.BytesIO(fileInMemory), mimetype='image/jpeg', resumable=True)
request = service.files().create(
    media_body=media,
    body={'name': 'MyFile', 'parents': ['<your folder Id>']}
)
response = None
while response is None:
    status, response = request.next_chunk()
    if status:
        print("Uploaded %d%%." % int(status.progress() * 100))
print("Upload Complete!")

参考:

如果我误解了您的问题,而这不是您所期望的方向,我深表歉意。

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