2017-07-14 15 views
0

Google Driveデータを操作するためのモジュールがあるDjango 1.10プロジェクトがあります。 私の目標は、GoogleドライブからユーザーのローカルPCにファイルをダウンロードすることです。今のところ、私は次のコードを持っている:Googleドライブからファイルをダウンロードし、GoogleドライブのPythonクライアントでクライアント側にHttpResponseとしてファイルを送信する

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) 

私はこの時点で立ち往生午前のHttpResponseとしてfoを渡す方法がわかりません。 ファイルタイプがわからないことは明らかです。これは、.mp3、.exe、.pdf ...とすることができます。コードはファイルの種類に関係なく動作するはずです。 また、ファイルをzipファイルとして送信したくありません。 可能ですか?私にこれをお願いしてください!

答えて

1

ウェズリー・チュンのpythonチュートリアルをpythonでチェックしてください。Google Drive API: Uploading & Downloading Filesで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)) 
で彼の公式ブログでは、追加の説明とソースコードがあります
関連する問題