django FileResponse下载文件
代码如下:
from django.http import FileResponse
def get(self, request, *args, **kwargs):
file_path = /Users/zonghan/Desktop/1.txt
return FileResponse(
open(file_path, "rb"), # 被下载文件的路径
filename=os.path.basename(file_path), # 文件名称
as_attachment=True
)
该文件会自动关闭,所以不要用上下文管理器打开它。
如果 as_attachment=True
,Content-Disposition
头被设置为 attachment
,要求浏览器将文件作为下载文件提供给用户。否则,只有在有文件名的情况下,才会设置值为 inline
的 Content-Disposition
头(浏览器默认)。
如果 open_file
没有名字,或者 open_file
的名字不合适,可以使用 filename
参数提供一个自定义的文件名。请注意,如果你传递了一个类似文件的对象,比如 io.BytesIO
,你的任务是在把它传递给 FileResponse
之前 seek()
如果用postman测试的话,点击如下按钮
如果上面代码有问题可以使用下面的例子