application/octet-stream
通过设置请求头'Content-Type': 'application/octet-stream'
, 告知浏览器这是一个二进制文件,并结合Content-disposition
告知浏览器,该二进制文件的文件名(如:Content-disposition:attachment; filename=MyFileName.xlsx
)
什么时候会用到
当需要实现数据导出或文件下载功能时会用到
设置content-type=application/octet-stream后会自动下载吗?
这里得说个前提,通常前端都是发一个ajax请求,请求结果'Content-Type': 'application/octet-stream'
但ajax并不能自动下载文件,拿到了ajax响应结果之后,可以用 js 新建一个隐藏的 a 标签(标签的 href 指向文件的链接),执行它的 click 事件,就可以下载文件了,不过需要注意的事,创建的 a 标签中要添加一个 download 属性。
对于a标签的download 属性,对于浏览器能打开得文件,例如 html,xml 等,如果你不加 download,点击 a 标签就不是下载了,而是打开,(注意 download 属性目前只被火狐和谷歌兼容)