Django Rest框架返回文件

作者:编程家 分类: django 时间:2025-04-22

使用Django Rest框架进行文件返回是一种常见的开发需求。Django Rest框架是一个基于Django的强大工具,用于构建RESTful API。在许多应用程序中,我们需要实现文件上传和下载的功能,这时候Django Rest框架提供的文件返回功能就派上了用场。

文件上传功能实现

首先,我们需要在Django Rest框架中实现文件上传的功能。为此,我们可以使用Django的内置模块`django.core.files`。以下是一个简单的示例代码,演示了如何在Django Rest框架中实现文件上传:

python

from rest_framework.views import APIView

from rest_framework.response import Response

from django.core.files.storage import default_storage

from django.core.files.base import ContentFile

class FileUploadView(APIView):

def post(self, request):

file = request.FILES['file']

file_name = file.name

file_path = default_storage.save(file_name, ContentFile(file.read()))

return Response({'file_path': file_path})

在上面的代码中,我们首先获取上传的文件对象`request.FILES['file']`,然后使用`default_storage`保存文件,并返回文件的保存路径。

文件下载功能实现

除了文件上传,我们还需要实现文件下载的功能。Django Rest框架提供了一个便捷的方法`FileResponse`,用于返回文件给客户端。以下是一个简单的示例代码,演示了如何在Django Rest框架中实现文件下载:

python

from rest_framework.views import APIView

from rest_framework.response import Response

from django.http import FileResponse

class FileDownloadView(APIView):

def get(self, request, file_path):

file = default_storage.open(file_path, 'rb')

response = FileResponse(file)

return response

在上面的代码中,我们首先使用`default_storage`打开指定路径的文件,然后创建一个`FileResponse`对象并返回给客户端。

案例代码:用户头像上传和下载

假设我们正在构建一个社交网络应用,并且我们需要实现用户头像的上传和下载功能。以下是一个示例代码,演示了如何使用Django Rest框架实现用户头像的上传和下载:

python

from rest_framework.views import APIView

from rest_framework.response import Response

from django.core.files.storage import default_storage

from django.core.files.base import ContentFile

from django.http import FileResponse

class AvatarUploadView(APIView):

def post(self, request):

file = request.FILES['avatar']

file_name = file.name

file_path = default_storage.save(file_name, ContentFile(file.read()))

return Response({'avatar_path': file_path})

class AvatarDownloadView(APIView):

def get(self, request, avatar_path):

file = default_storage.open(avatar_path, 'rb')

response = FileResponse(file)

return response

在上面的代码中,我们定义了两个API视图:`AvatarUploadView`用于处理头像上传请求,`AvatarDownloadView`用于处理头像下载请求。用户可以通过POST请求将头像文件上传到服务器,并通过GET请求从服务器上下载头像文件。

Django Rest框架为我们提供了方便的文件返回功能,使得文件上传和下载变得简单而高效。通过上述案例代码,我们可以轻松实现用户头像的上传和下载功能。无论是构建社交网络应用还是其他类型的应用,使用Django Rest框架进行文件返回都是一个不错的选择。