-
[Google Api] 특정 구글 드라이브 폴더에 파일 업로드하기programming 공부/Python 2022. 1. 23. 21:18
# -*- coding: utf-8 -*- import os.path from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.errors import HttpError from googleapiclient.http import MediaFileUpload def uploadFile(filePath, fileName, googleFolderId): """ Google Drive 특정 폴더에 파일을 업로드 합니다. :param filePath: 로컬에 파일이 위치한 폴더 경로 :param fileName: 파일 이름(확장자 포함) :param googleFolderId: Google folder id :return: 업로드 완료된 파일의 google file id """ SCOPES = ['https://www.googleapis.com/auth/drive'] creds = None if os.path.exists('token.json'): creds = Credentials.from_authorized_user_file('token.json', SCOPES) # If there are no (valid) credentials available, let the user log in. if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) else: flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server(port=0) # Save the credentials for the next run with open('token.json', 'w') as token: token.write(creds.to_json()) try: service = build('drive', 'v3', credentials=creds) metadata = {'name':(fileName), 'mimeType':'*/*', "parents":[googleFolderId]} media = MediaFileUpload(os.path.join(filePath,fileName),mimetype= '*/*',resumable=True) res = service.files().create(body=metadata, media_body=media, fields='id').execute() if res: print('"%s" 업로드 성공' %fileName) return res except HttpError as error: print(f'An error occurred: {error}')
https://github.com/kef2001/googleapi/blob/cc653a1f6b77becda9c4118cb5a4cf7f62e80b52/uploadfile.py
'programming 공부 > Python' 카테고리의 다른 글
[Google Api] 구글 드라이브에서 파일 다운로드 하기 (0) 2022.01.24 [Google Api] 구글 드라이브에 올라가있는 파일 업데이트하기 (0) 2022.01.23 [Python] 다른 프로세스의 window title 가져오기 (0) 2021.08.18 [Python] 파이썬으로 batch 파일을 다른 창으로 실행하기 (0) 2021.08.18 [Python] Django Boolean값으로 filter할 수 없는 문제 (0) 2021.06.24