Как загрузить и расшарить файл на Google Drive?
необходимо загрузить файл на google drive, расшарить его и получить общедоступную ссылку.
С загрузкой файла никаких проблем нет, а вот как сделать его общедоступным и получить ссылку нигде информации нет. Кто разбирался с проблемой просьба помочь.
Ответы (2 шт):
Автор решения: LeonidPetrovich
→ Ссылка
Попробуйте этот код
res = DRIVE.files().insert(convert=convert, body=metadata,
media_body=filename, fields='mimeType,exportLinks,id').execute() # <-- EDIT: added id here
print('Uploaded file to {url}'.format(url='https://drive.google.com/open?id=' + res.get('id')))
Автор решения: contributorpw
→ Ссылка
Нельзя сразу создать файл и назначить ему права. Это делается в два этапа.
Важно. Код без аутентификации. Делайте самостоятельно. Для сервисного аккаунта, доменного пользователя или пользователя системы весь процесс будет одинаковым
Google Drive API v3
import os
import magic
from googleapiclient.discovery import build
drive_service = build('drive', 'v3')
from googleapiclient.http import MediaFileUpload
# Создание файл для примера
file_local_path = "/tmp/for_upload.txt"
with open(file_local_path, "w") as f:
f.write(u"Тут какой-то контент 2")
# Загрузка файла
basename = os.path.basename(file_local_path)
mime = magic.from_file(file_local_path, mime=True)
# Тело запроса загрузки
file_metadata = {"name": basename, "mimeType": mime}
# Конфигурация запроса загрузки
media = MediaFileUpload(file_local_path, mimetype=mime, resumable=True)
# Загрузка
created = (
drive_service.files()
.create(body=file_metadata, media_body=media, fields="id,webViewLink")
.execute()
)
# Тело запроса назначения прав
file_permission = {"role": "reader", "type": "anyone"}
# Назначение прав
drive_service.permissions().create(
body=file_permission, fileId=created.get("id")
).execute()
# Вывод
print("File ID: {}".format(created.get("id")))
print("File url: {}".format(created.get("webViewLink")))