I want to upload a photo to google drive. I can read the files that are on the drive. But when I ad the uploading part, from line 49 to 55, I keep getting the same error. I keep getting the error "NameError: name 'drive_service' is not defined" I have every library imported but still doesn't work This is my code I've looked around but haven't seen a post explaining it.
from __future__ import print_function
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
from apiclient.http import MediaFileUpload
# If modifying these scopes, delete the file token.json.
SCOPES = 'https://www.googleapis.com/auth/drive'
def main():
"""Shows basic usage of the Drive v3 API.
Prints the names and ids of the first 10 files the user has access to."""
# The file token.json stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
store = file.Storage('token.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('credentials.json', SCOPES)
creds = tools.run_flow(flow, store)
drive = build('drive', 'v3', http=creds.authorize(Http()))
# Call the Drive v3 API
results = drive.files().list(
pageSize=10, fields="nextPageToken, files(id, name)").execute()
items = results.get('files', [])
if not items:
print('No files found.')
else:
print('Files:')
for item in items:
print(u'{0} ({1})'.format(item['name'], item['id']))
if __name__ == '__main__':
main()
file_metadata = {'name': 'photo.jpg'}
media = MediaFileUpload('photo.jpg',
mimetype='image/jpeg')
file = drive_service.files().create(body=file_metadata,
media_body=media,
fields='id').execute()
print ('File ID: %s' % file.get('id'))
you can directly use service instead of driver_service. It worked for me.
As shown in the code sample
file_metadata = {'name': 'photo.jpg'}
media = MediaFileUpload('photo.jpg',
mimetype='image/jpeg')
file = service.files().create(body=file_metadata,
media_body=media,
fields='id').execute()
You have build your connection with this line:
drive = build('drive', 'v3', http=creds.authorize(Http()))
When calling file = drive_service.files()
you have to pass the connection you have just built. So instead of drive_service
, use drive
(that you have just built).
Summing up, you should replace:
file = drive_service.files().create(body=file_metadata,
media_body=media,
fields='id').execute()
with:
file = drive.files().create(body=file_metadata,
media_body=media,
fields='id').execute()
and your script should work.
Change drive_service
to drive
or vise versa
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With