在DRF + Angular中下载文件时出现问题

时间:2018-10-25 07:16:22

标签: python django angular django-rest-framework

我正在DRF + Angular上进行项目。当前在localhost上,我可以通过以下操作下载文件:

    @action(methods=['get'], detail=True)
    def download(self, *args, **kwargs):
        instance = self.get_object()
        file_handle = instance.file.open()
        response = FileResponse(file_handle.read(), content_type='application/file')
        response['Content-Length'] = instance.file.size
        response['Content-Disposition'] = f'attachment; filename="{instance.file.name}"'    
        file_handle.close()
        return response

它可以在localhost上运行,但是当前端尝试在服务器上的相同url下获取相同的文件时-我使用HTTP 401 Unauthorized重定向到DRF模板。但是我已经输入了我的凭据。怎么了?

1 个答案:

答案 0 :(得分:0)

我认为前端跨源问题 您可以从here

了解更多信息

在django,您也可以使用django-cors-headers来解决它 我不确定,因为您没有提供网络服务器配置的完整详细信息

还要检查响应头 是否添加文件类型为??的

'Content-Description: File Transfer'
'Content-Type: application/octet-stream'
'Content-Disposition: attachment; filename="'.basename($file).'"'
'Content-Length: ' . filesize($file)
'Pragma: public'
'Cache-Control: must-revalidate'
'Expires: 0'
'Accept: <MIME_type>/*'

检查this