我看了一些网上的东西 有些疑问做下载 需要2个重要响应头header("Content-type: ".$ctype);
header('Content-Disposition: attachment; filename="'.$name.'"');
Content-type 是 mime
Content-Disposition 是 MIME 协议的扩展 用户可以看到 提示框里面的名字 然后保存的时候 也以这个名字保存我看到网上好多都是这么做的
function findType($type=""){
$ctype = "";
switch($type){
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "mp3": $ctype="audio/mpeg"; break;
case "wav": $ctype="audio/x-wav"; break;
case "mpeg":
case "mpg":
case "mpe": $ctype="video/mpeg"; break;
case "mov": $ctype="video/quicktime"; break;
case "avi": $ctype="video/x-msvideo"; break;
default: $ctype="application/force-download";
}
return $ctype = "application/octet-stream"; return $ctype;
}根据上传文件的 后缀去拼 Content-type: 头
但是
其只要写成
header("Content-type: application/octet-stream“);
header('Content-Disposition: attachment; filename="'.$name.'"');
就是 mime类型全部都是 application/octet-stream
然后再把文件名字 本身的文件名字就行了
(ps:如果没有header('Content-Disposition: attachment; filename="'.$name.'"') 保存的文件就是down.php的文件名字了)我不明白 第一种做法的好处是什么????? 第2中方法不是更简单吗
求解释.............
header('Content-Disposition: attachment; filename="'.$name.'"');
Content-type 是 mime
Content-Disposition 是 MIME 协议的扩展 用户可以看到 提示框里面的名字 然后保存的时候 也以这个名字保存我看到网上好多都是这么做的
function findType($type=""){
$ctype = "";
switch($type){
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "mp3": $ctype="audio/mpeg"; break;
case "wav": $ctype="audio/x-wav"; break;
case "mpeg":
case "mpg":
case "mpe": $ctype="video/mpeg"; break;
case "mov": $ctype="video/quicktime"; break;
case "avi": $ctype="video/x-msvideo"; break;
default: $ctype="application/force-download";
}
return $ctype = "application/octet-stream"; return $ctype;
}根据上传文件的 后缀去拼 Content-type: 头
但是
其只要写成
header("Content-type: application/octet-stream“);
header('Content-Disposition: attachment; filename="'.$name.'"');
就是 mime类型全部都是 application/octet-stream
然后再把文件名字 本身的文件名字就行了
(ps:如果没有header('Content-Disposition: attachment; filename="'.$name.'"') 保存的文件就是down.php的文件名字了)我不明白 第一种做法的好处是什么????? 第2中方法不是更简单吗
求解释.............
如果收到的数据既不能自己解释,又没有合适的软件以图形化方式展现。就会出现下载对话框,让您下载后自行处理最简单的能说明问题的情况就是:你没有配置 php 文件的支持时,运行php程序就会出现下载对话框
不要单纯认为所有人都只用浏览器下载然后在本地打开文件
其实现在国外联网在线打开文件的情况比下载后打开更普遍
不明白呀
不是把 响应头 设置成
header('Content-Disposition: attachment;filename="'.$name.'"')
就肯定会以文件的方式下载吗?
php 在哪配置才能出现对话框呀???
octet-stream 的含义是 8位字节流,不光是浏览器,就是你我也不知道里面到底是什么东西
header('Content-Disposition: attachment; filename="'.$name.'"'); //这是声明一个文件名
Content-Disposition 可以激活对话框 (当然 网上也不一定是对 我经常找到错误的代码)但是我自己测试的时候
如果不设置这个 Content-Disposition头 img html就会以网页的形式打开
设置了就不会了还有你说在可以再php里面配置 那个怎么配置呀???