使用python我已经解析并存储了文件,现在我需要使用drf作为api视图将该文件发送到前端。
我可以发送文件作为json响应之类的响应吗?如果可以,怎么发送?
答案 0 :(得分:0)
是的,但是与其他任何媒体一样,它将以JSON中的URL形式发送。为了将URL添加到您的响应中,只需serialize您的数据,然后将其作为response发送。然后,您可以使用任何使用的前端语言来操纵文件。
答案 1 :(得分:0)
取决于文件大小和文件类型,可以使用不同的技术来实现。
对于较大的文件,通常不建议使用Django服务。如果该资源不受访问保护,则可以将该文件用作媒体文件或静态文件,并让前端从那里检索它。如果受访问保护,通常的做法是将文件放在S3和send a generated signed URL之类的地方。
对于较小的有效负载,您只需读取文件内容并发送a file attachment response。
答案 2 :(得分:0)
An example of sending a file using a HttpResponse
(from django.http
):
class ExportDataView(views.APIView):
permission_classes = (permissions.IsAuthenticated, HasDashboardReadAccess)
def get(self, request):
# Read the data from your file (use with open(): or whatever else you need)
file = <your_file>.read()
# Specify the file content type (here it's an .xlsx)
content_type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
response = HttpResponse(file, content_type=content_type)
response['Content-Disposition'] = f'attachment; filename={<your file name>}'
return response
Hope this helps!