Skip to main content
 首页 » 编程设计

python之用于在没有 Google Driver UI 的情况下将大文件上传到 Google Drive 的 POST 消息

2025年05月04日94kuangbin

我的理解是,要使用 API 版本 2 从我自己的应用程序将大文件上传到 Google 云端硬盘,我应该发送如下消息。不幸的是,我不知道如何使用 Python 为多部分消息实现这种格式。有没有人有示例 Python 代码可以让我朝着正确的方向前进?

谢谢, 克里斯


POST /upload/drive/v2/files?uploadType=multipart 
 
Authorization: Bearer <Access token> 
Content-Length: <length> 
Content-Type: multipart/related; boundary="<a base64 encoded guid>" 
 
--<a base64 encoded guid> 
Content-Type: application/json 
 
{"title": "test.jpg", "mimeType":"image/jpeg", "parents":[]} 
--<a base64 encoded guid> 
Content-Type: image/jpeg 
Content-Transfer-Encoding: base64 
 
<base64 encoded binary data> 
--<a base64 encoded guid>-- 

请您参考如下方法:

Google Drive API 的引用指南包含多种语言的代码片段,包括适用于所有 API 端点的 Python。

对于您的用例,drive.files.insert端点有答案:

from apiclient import errors 
from apiclient.http import MediaFileUpload 
# ... 
 
def insert_file(service, title, description, parent_id, mime_type, filename): 
  """Insert new file. 
 
  Args: 
    service: Drive API service instance. 
    title: Title of the file to insert, including the extension. 
    description: Description of the file to insert. 
    parent_id: Parent folder's ID. 
    mime_type: MIME type of the file to insert. 
    filename: Filename of the file to insert. 
  Returns: 
    Inserted file metadata if successful, None otherwise. 
  """ 
  media_body = MediaFileUpload(filename, mimetype=mime_type, resumable=True) 
  body = { 
    'title': title, 
    'description': description, 
    'mimeType': mime_type 
  } 
  # Set the parent folder. 
  if parent_id: 
    body['parents'] = [{'id': parent_id}] 
 
  try: 
    file = service.files().insert( 
        body=body, 
        media_body=media_body).execute() 
 
    return file 
  except errors.HttpError, error: 
    print 'An error occured: %s' % error 
    return None