我一直在论坛上搜索,但没有成功解决我的问题。
我正在尝试使用 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.
由于我正在执行的操作,该文件将位于内存中,无需保存到磁盘,使用其文件路径上传文件,然后删除临时保存在磁盘上的文件。
如何才能只上传内存中的文件,而无需将其保存到磁盘并使用文件路径和名称?
Thanks
在这个答案中,我使用“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!")
参考:
- 类 MediaIoBaseUpload https://googleapis.github.io/google-api-python-client/docs/epy/googleapiclient.http.MediaIoBaseUpload-class.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)