Content-Disposition

Content-Disposition 有两种应用场景。

用在HTTP响应头中

场景一是用在HTTP的响应头中,指示响应的内容该以何种形式展示。是以内联的形式(即网页或者页面的一部分),还是以附件的形式下载并保存到本地。

Content-Disposition 的第一个参数的值有两个:

  • inline 默认值,表示响应中的消息体会以页面的一部分或者整个页面的形式展示。
  • attachment 表示响应的消息体应被下载到本地;大多数浏览器会出现一个“保存为”的对话框。

第二个参数是可选的 filename。当响应的内第一个参数指定为 attachment 时,浏览器会将响应中的内容下载下来,filename 可以指定下载后的文件名。

Content-Disposition 在响应头中可能会这样出现:

1
2
3
4
5
6
// 正常解析渲染
Content-Disposition: inline
// 下载文件
Content-Disposition: attachment
// 下载文件,并将文件保存为filename.jpg
Content-Disposition: attachment; filename="filename.jpg"

用在 multipart/form-data的请求体中

还有一种场景是,当页面上有表单,并且我们选择的表单提交方式为 multipart/form-data 时,Content-Disposition 会出现在请求体中。其作用是说明对应的表单项的字段名是什么,表单中上传的文件名是什么。在该场景下第一个参数总是固定不变的 form-data,另外有两个可选参数。name 表示对应的表单项的字段名,filename 表示对应的上传的文件名。参数之间使用 ; 进行分割。

Content-Disposition 在 multipart/form-data 的请求体头中可能会这样出现:

1
2
3
Content-Disposition: form-data
Content-Disposition: form-data; name="fieldName"
Content-Disposition: form-data; name="fieldName"; filename="filename.jpg"

转载:https://juejin.im/post/5d521575f265da03ee6a4bda