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

你可能感兴趣的:(Django,django)