response = HttpResponse(content=流, content_type="文件的媒体类型") # 下载使用的 response["Content-Disposition"] = "attachment;filename=a.jpg" return response
FieldFile 常见的两个方法
# 获取上传的 文件路由 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
# 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))