Django下载图片接口

import logging
from django.http import HttpResponse, FileResponse
from io import BytesIO
from urllib.parse import quote

class FileDownload(APIView):
    def get(self, request, *args, **kwargs):
        try:
            id = request.query_params.get('id')
            my_dip = DiplomaMyInfo.objects.filter(id=id).first()
            file_path = my_dip.diploma_path
            filename = os.path.basename(file_path)
            
            # file_path 图片路径
            with open(file_path, 'rb') as file:
                file_data = BytesIO(file.read())
            response = FileResponse(file_data)
            encoded_filename = quote(filename)
            response['Content-Disposition'] = f'attachment; filename="{encoded_filename}"'
            return response
        except Exception as e:
            logging.error(str(e))
            if 'No such file or directory' in str(e):
                return JsonResponse(msg='找不到该文件')
            return JsonResponse(msg=str(e))

urlpatterns = [

    path('api/v1/filedownload/', views.user.FileDownload.as_view(), name='filedownload'),

]

直接访问路由即可下载 

127.0.0.1:8000/api/v1/filedownload/?id=6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值