首页 > 解决方案 > 如何使用 python 中的请求将大文件上传到谷歌驱动器?

问题描述

我有使用我的访问令牌和请求将我的档案上传到 Google Drive 的代码,但是如果文件大于 512MB,它将失败并出现退出代码MemoryError,所以我正在寻找一种方法来修复这个错误并上传一个文件大于 512MB。我已经尝试找到解决方案,但没有找到任何可以使用访问令牌的地方。

import os
import json
import requests
import ntpath
import oauth2
import httplib2
import oauth2client
from contextlib import closing
from googleapiclient.discovery import build
from oauth2client.client import GoogleCredentials

_CLIENT_ID = 'YOUR_CLIENT_ID'
_CLIENT_SECRET = 'YOUR_CLIENT_SECRET'
_REFRESH_TOKEN = 'YOUR_REFRESH_TOKEN'
_PARENT_FOLDER_ID = 'YOUR_PARENT_FOLDER_ID'
_ARCHIVE_FILE = os.environ['USERPROFILE'] +'\\Desktop\\WobbyChip.zip'


# ====================================================================================

def GetAccessToken(client_id, client_secret, refresh_token):
    cred = oauth2client.client.GoogleCredentials(None,client_id,client_secret,refresh_token,None,'https://accounts.google.com/o/oauth2/token',None)
    http = cred.authorize(httplib2.Http())
    cred.refresh(http)
    obj = json.loads(cred.to_json())
    _ACCESS_TOKEN = obj['access_token']
    return _ACCESS_TOKEN


def UploadFile(local_file, parent_folder_id, access_token,):
    headers = {'Authorization': 'Bearer ' +access_token}
    para = {
        'name': (ntpath.basename(local_file)),
        'parents': [parent_folder_id]}
    files = {
        'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'),
        'file': open(local_file, 'rb')}
    requests.post(
        'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart',
        headers=headers,
        files=files)

# ====================================================================================


if __name__ == '__main__':
    UploadFile(_ARCHIVE_FILE, _PARENT_FOLDER_ID, GetAccessToken(_CLIENT_ID, _CLIENT_SECRET, _REFRESH_TOKEN))

标签: pythonpython-2.7python-requests

解决方案


推荐阅读