django-文件下载
2022/2/24 6:24:51
本文主要是介绍django-文件下载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文件下载HttpResponse
response = HttpResponse(content=流, content_type="文件的媒体类型") # 下载使用的 response["Content-Disposition"] = "attachment;filename=a.jpg" return response
- attachment : 以附件的形式显示数据 (下载
- inline : 在线预览 (图片)
模型中 FileField 的类型是 FieldFile
FieldFile 常见的两个方法
- open() : 以流的形式读文件,类似于 python中 open函数
- chunks() : 类似于 文件上传中将的 以块的形式读取文件
- read() : 一次性读
# 获取上传的 文件路由 resource_path = res.resource.name from mimetypes import MimeTypes # 通过文件名、猜测文件的媒体类型 content_type, encoding = MimeTypes().guess_type(resource_path) content_type = content_type if content_type is not None else 'application/x-msdownload' response= HttpResponse(content_type=content_type) # 进行文件的下载 for chunk in res.resource.chunks(): response.write(chunk) # quote 是对 路径进行中文转码 from urllib.parse import quote # 获取下载的文件名 filename = quote(f"{res.resource_name}.{res.ext}") # 设置文件下载、并设置下载的文件名 response["Content-Disposition"] = "attachment;filename=" + filename return response
文件下载FileResponse
# as_attachment = False : false代表在线预览, true 代表下载 # filename 设置下载的文件名 # streaming_content 设置 下载的内容,值必须拥有 read() 方法 # 如果 streaming_content 设置的内容没有 read() 方法,必须设置成 可迭代的对象 return FileResponse(as_attachment=False, filename="a.jpg", streaming_content=io.BytesIO(photo))
通过 /media/xxxx 获取上传的资源 (直接暴露了资源的位置)
这篇关于django-文件下载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03如何用Google Gemini和MyScaleDB打造一个基于检索增强生成技术的聊天机器人
- 2024-12-24MongoDB资料:新手入门完全指南
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享