admin 管理员组

文章数量: 1086019


2024年4月23日发(作者:个人博客不能有评论)

header中Content-Disposition的作用与使用方法

Content-disposition是MIME协议的扩展,MIME 协议指示 MIME 用户代理如何

显示附加的文件。Content-disposition可以控制用户请求所得的内容存为一个文件的时

候提供一个默认的文件名(在浏览器上将弹出文件下载对话框)。

格式说明:

content-disposition = "Content-Disposition" ":" disposition-type *( ";"

disposition-parm )

字段说明:

Content-Disposition字段名

disposition-type 下载方式,(attachment表示以附件方式下载 )

disposition-parm 保存时的默认文件名

服务端向客户端游览器发送文件时,如果该文件是浏览器支持的类型,一般会默认使

用浏览器打开,比如文本文件、图片文件等,它们会直接在显示在浏览器中,并不会显示

下载文件对话框。如果需要提示用户保存,就要利用Content-Disposition字段来告知浏

览器,这个文件需要让用户保存起来。

使用PHP可以这样操作,代码如下:

Header("Content-Disposition","attachment;filename=");

这样浏览器就会弹出下载对话框并提示下载后保存还是打开。 Content-Disposition

在协议中详细定义如下:

content-disposition = "Content-Disposition" ":" disposition-type *( ";"

disposition-parm )

这在上面文章中已有详细解释,必须有一个disposition-type,以及0个或多个

disposition-parm,多个disposition-parm之间用分号分隔。

disposition-type = "attachment" | disp-extension-token

配置类型:由一个attachment组成或者由一个disp-extension-token组成

disposition-parm = filename-parm | disp-extension-parm

disposition-parm由一个filename-parm或者一个disp-extension-parm组成

filename-parm = "filename" "=" quoted-string

filename-parm由关键字filename、等号和quoted-string组成

disp-extension-token = token

disp-extension-token的格式和token相同

disp-extension-parm = token "=" ( token | quoted-string )

一个 disp-extension-parm 由一个 字符串和等号组成

以上内协议解释出自于RFC 1806。可见,content-disposition不仅可以指示浏览器

下载文件时的默认文件名,还有其它一些用处。在此不作过多说明。

示例:Content-Disposition: attachment; filename=""

filename参数虽然也可以包含路径信息,但User-Agnet会忽略掉这些信息,只会把

路径信息的最后一部分做为文件名。当你在响应类型为application/octet- stream情况下

使用了这个头信息的话,那就意味着你不想直接显示内容,而是弹出一个"文件下载"的对

话框,接下来就是由用户来决定"打开"还是"保存" 。


本文标签: 文件 下载 用户 浏览器 协议