【发布时间】:2019-10-18 11:41:08
【问题描述】:
我有一个可以上传文件的 django 应用程序。我在 API 中显示我的文件。像这样:
class FileCollection(models.Model):
name = models.CharField(max_length=120, null=True, blank=True)
store_file = models.FileField(upload_to=upload_file, null=True, blank=True)
creation_date = models.DateTimeField(null=True, blank=True)
class FileDownloadAPIListView(ListAPIView):
"""Lists all files.
"""
queryset = FileCollection.objects.all()
serializer_class = FileCollectionSerializer
稍后我将实现不同的查询来获取特定的文件。
我想使用 python 从脚本中下载这些文件,而无需打开浏览器或类似的东西。我想使用获取我的文件然后将其保存到本地计算机的请求进行经过身份验证的 API 调用。
问题是我的文件必须是私有的,并且只有经过身份验证的用户才能下载它。对于我的其他 API,我正在使用 JWT 令牌身份验证。
我现在的问题是:我该如何实现?我要吗
a) 将我的文件保存在 S3 中并对该 URL 进行 API 调用,以某种方式使用我的 AWS 凭证对我进行身份验证? b) 将我的文件保存在我的 PostgrSQL 数据库中的某个位置,并使用 JWT 通过经过身份验证的 API 调用从那里获取所有内容。 c) 我没有考虑的第三个选项
另外,如果我使用 a、b 或 c,我该如何去实现它们?
选项a)我认为可能是这样的:
def get_file(method='get'):
headers = {
"Authorization": "JWT " + token
}
url = 'http://localhost:8000/linktomyawsstorage'
myfile = requests.get(url)
open('/somefolder', 'wb').write(myfile.content)
r = requests.request(method, ENDPOINT, headers=headers)
但我不知道如果我的文件位于 AWS 上的私有存储中,这是否仍然有效。另外我不知道这是否应该实现它。
非常感谢任何建议、想法、帮助或提示!
提前非常感谢!
【问题讨论】:
标签: python django authentication amazon-s3 static