gpt4 book ai didi

django - 如何使用 django 和 aws s3 强制下载图片

转载 作者:行者123 更新时间:2023-12-01 11:47:18 25 4
gpt4 key购买 nike

我有这个 View ,它需要一个 user_id 和 image_id。当用户点击链接时,检查是否有图像。如果有,那么我希望文件能够自动强制下载。

模板:

<a class="downloadBtn" :href="website + '/download-image/'+ user_id+'/'+ image_id +'/'">Download</a>

在我在我的本地机器上开发它之前,这段代码是有效的。

@api_view(['GET'])
@permission_classes([AllowAny])
def download_image(request, user_id=None, image_id=None):
try:
ui = UserImage.objects.get(user=user_id, image=image_id)
content_type = mimetypes.guess_type(ui.image.url)
wrapper = FileWrapper(open(str(ui.image.file)))
response = HttpResponse(wrapper, content_type=content_type)
response['Content-Disposition'] = 'attachment; filename="image.jpeg'
return response
except UserImage.DoesNotExist:
...

但现在我正在为我的静态和媒体文件使用 aws s3。我正在使用 django-storages 和 boto3。如何在浏览器中强制下载图片?

@api_view(['GET'])
@permission_classes([AllowAny])
def download_image(request, user_id=None, image_id=None):
try:
ui = UserImage.objects.get(user=user_id, image=image_id)
url = ui.image.url
...
... FORCE DOWNLOAD THE IMAGE
...
except UserImage.DoesNotExist:
...
... ERROR, NO IMAGE AVAILABLE
...

最佳答案

您可以只返回带有图像本身的 HttpResponse。

return HttpResponse(instance.image, content_type="image/jpeg")

这将返回图像的字节流。 Content-type header是为了在Postman等平台展示图片。

关于django - 如何使用 django 和 aws s3 强制下载图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44584376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com