从谷歌客户端下载文件,并通过谷歌客户端下载文件

2024-05-14 11:29:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个django1.10项目,其中我有一个用于处理googledrive数据的模块。 目前我的目标是从googledrive下载一个文件到用户的本地PC。到目前为止,我有以下代码:

def a_files_google_download(request):
   #...
   service = build("drive", "v2", http=http)
   download_url = file.get('downloadUrl')
   resp, content = service._http.request(download_url)
   fo = open("foo.exe", "wb")
   fo.write(content)

我在这一点上卡住了,不知道如何将fo作为HttpResponse传递。 显然,我事先不知道文件类型。它可以是.mp3、.exe、.pdf…并且代码应该可以工作而不考虑文件类型。 另外,我不想将文件作为zip文件发送。 有可能吗?请帮帮我!在


Tags: 模块文件数据项目代码httpurlrequest
1条回答
网友
1楼 · 发布于 2024-05-14 11:29:12

Google Drive API: Uploading & Downloading Files中查看wesleychun的python教程使用python下载和上传驱动器文件,他在v2和v3中演示了这一点。在

在他的官方博客Google Drive: Uploading & Downloading files with Python 中有其他解释和源代码

from __future__ import print_function
import os

from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
try:
    import argparse
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
    flags = None

SCOPES = 'https://www.googleapis.com/auth/drive.file'
store = file.Storage('storage.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store, flags) \
            if flags else tools.run(flow, store)
DRIVE = build('drive', 'v2', http=creds.authorize(Http()))

FILES = (
    ('hello.txt', False),
    ('hello.txt', True),
)

for filename, convert in FILES:
    metadata = {'title': filename}
    res = DRIVE.files().insert(convert=convert, body=metadata,
            media_body=filename, fields='mimeType,exportLinks').execute()
    if res:
        print('Uploaded "%s" (%s)' % (filename, res['mimeType']))

if res:
    MIMETYPE = 'application/pdf'
    res, data = DRIVE._http.request(res['exportLinks'][MIMETYPE])
    if data:
        fn = '%s.pdf' % os.path.splitext(filename)[0]
        with open(fn, 'wb') as fh:
            fh.write(data)
        print('Downloaded "%s" (%s)' % (fn, MIMETYPE))

相关问题 更多 >

    热门问题