我需要用户能够使用以下表单通过我的Flask-web应用程序上传文件,其中 my Dropbox或GDrive用作存储。意思是,用户不必登录,存储应该已经在我端被授权。
我无法把头围在文档上。有没有人有处理此类文件的经验?
答案 0 :(得分:0)
Google有a page,提供了使用Google Drive API访问帐户的云存储的Python示例。它显示了如何列出文件,但是您也可以使用Drive API来upload files:
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')
在这种情况下,您可以use an upload form将文件发送到Flask,然后再发送到Google云端硬盘。如果文件很小并且用户数量很少,这很好,但是通常这种方法将不可扩展,因为Flask实例是单线程的,并且在一个用户上传内容时将无法回答其他请求。如果需要按比例上传,则应直接上传文件。您还可以通过Redis Queue(这是Heroku的链接)或Cucumber等调查作为后台任务完成任务的方法,具体取决于您使用的平台。
如果您不介意在GDrive和Dropbox上使用Amazon的S3竞争对手,可以使用helpful YouTube series引导您使用boto3库在Flask上进行设置。一旦有了S3存储桶和帐户密钥,就可以根据需要发送和接收数据。 a Heroku page这里讨论了如何在Python中设置直接S3上传。如果您使用的是其他平台,则详细信息可能会更改。
答案 1 :(得分:0)
Dropbox API的设计初衷是每个用户都将链接自己的Dropbox帐户,以便与自己的文件进行交互。从技术上讲,仅可以连接到一个帐户。 SDK并未对此提供明确支持,出于各种技术和安全原因,我们不建议这样做。
但是,如果您确实采用了这种方法,则无需开始the authorization flow,而是可以为您自己的帐户和应用嵌入现有的访问令牌。您可以将其用于upload files。