Как разрешить кому-либо загружать файлы в папку Dropbox или Google Drive с помощью Flask? - PullRequest
0 голосов
/ 16 июня 2019

Мне нужно, чтобы пользователи могли загружать файл через мое веб-приложение Flask, используя форму, где my Dropbox или GDrive используется в качестве хранилища.Это означает, что пользователям не нужно входить в систему, хранилище должно быть авторизовано уже на моем конце.

Я не могу обернуться вокруг документации.У кого-нибудь есть опыт такой обработки файлов?

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

API Dropbox был разработан с намерением, чтобы каждый пользователь связывал свою собственную учетную запись Dropbox, чтобы взаимодействовать со своими собственными файлами. Технически возможно подключиться только к одной учетной записи. SDK не предоставляют явной поддержки, и мы не рекомендуем этого делать по различным техническим причинам и соображениям безопасности.

Однако, если вы пошли по этому пути, вместо того, чтобы запустить поток авторизации , вы добавили бы существующий токен доступа для своей учетной записи и приложения. Вы можете использовать это для загрузки файлов .

0 голосов
/ 16 июня 2019

У Google есть страница , которая предоставляет пример использования Python API Google Drive для доступа к облачному хранилищу вашей учетной записи.В нем показано, как составлять список файлов, но вы также можете использовать API-интерфейс Drive для загрузки файлов :

file_metadata = {'name': 'photo.jpg'}
media = MediaFileUpload('files/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')

В этом случае будет использоваться форма загрузки .отправить файл на Flask, а затем на Google Drive.Это хорошо, если файлы небольшие, а количество пользователей небольшое, но в целом такой подход будет не масштабируемым, поскольку ваш экземпляр Flask является однопоточным и не сможет отвечать на другие запросы, пока один пользователь загружает контент.Если вам нужна загрузка в масштабе, вы должны загрузить файлы напрямую.Вы также можете исследовать выполнение задачи в качестве фонового задания, например, через Redis Queue (здесь ссылка на Heroku ) или Cucumber, что будет зависеть от используемой платформы.

Если вы не против использовать конкурента Amazon S3 для GDrive и Dropbox, есть полезная серия YouTube , которая поможет вам настроить Flask с помощью библиотеки boto3.Если у вас есть корзина S3 и ключи учетной записи, вы можете отправлять и получать данные по мере необходимости.Вот страница Heroku , где обсуждается настройка прямой загрузки S3 в Python.Подробности могут измениться, если вы используете другую платформу.

...