gpt4 book ai didi

python - 无法使用 FileResponse 或 StreamingHttpResponse 渲染 base64 文件,但可以使用 HttpResponse

转载 作者:太空宇宙 更新时间:2023-11-03 21:34:11 26 4
gpt4 key购买 nike

我将我的文件以 base64 格式保存在数据库中,然后尝试使用 Django View 呈现它。

file_obj = AttachmentData.objects.filter(id=file_id)
file_data = base64.b64decode(file_obj.attachment_file)
bytes_out = BytesIO()
bytes_out.write(file_obj)
response = HttpResponse(string_out.getvalue(),content_type=email_file_obj.mime_type)
response["Content-Disposition"] = "attachment; filename={}".format(name)
return response

这段代码工作正常,但是当文件很大时,我需要使用 StreamingHttpResponse 或 FileResponse。问题是这些响应需要文件对象作为参数。要创建文件,我需要保存它,但我不想要它,因为它会占用我的磁盘空间。

temp_file_obj = open(file_obj.file_name, 'wb')
temp_file_obj.write(file_data)
temp_file_obj.close()
response = FileResponse(open(file_obj.file_name, 'rb'), content_type=email_file_obj.mime_type)

我需要一个解决方案,以便我发送文件而不将文件保存在磁盘上。

最佳答案

您不需要将真实的文件对象传递给StreamingHttpResponse,您可以生成数据本身作为参数。该文档提供 this例如,他们显示传递一个大型 CSV 文件作为响应。您也可以对存储的数据执行类似的操作。

关于python - 无法使用 FileResponse 或 StreamingHttpResponse 渲染 base64 文件,但可以使用 HttpResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53336875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com