刚接到一公司客户发来的QQ信息,说想放些办公文本资料在服务器上面供自己的客户下载,但放上去了,点击下载,直接就在浏览器中把文件打开了,我问他都是些什么后缀的文件想让客户下载的,他告诉我有doc,xls和pdf的文档,我问他还需要支持别的后缀文档在服务器上面下载吗,如果有,一起发给我,我上服务器上面给你配置一下,对方过了会给我发来信息说没有了,就这几个后缀吧。
其实我们的nginx服务端,想让一些后缀如doc,xls,pdf以附件的形式在点击网页上面的下载按钮后,弹出另存为,也就是下载保存的提示窗口的配置非常的简单,只需要在server配置项中加入个if语句,对于doc,xls,pdf这些后缀文件在他们的header头添加Content-Disposition: ‘attachment;’;的信息便可以让文件支持直接下载了,看下面的配置代码;
server {
listen 80;
server_name thinkphp.qzze.com;
root wwwroot/thinkphp/public;
index index.php index.html index.htm;
#加入这个if语句,判断如果是这几个后缀的文件,则在headers后上添加以下信息,这样用户访问浏览器就可以直接下载了。
if ($request_filename ~* ^.*?\.(doc|xls|pdf)$){
add_header Content-Disposition: 'attachment;';
}
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?s=/$1 last;
break;
}
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
最后重新加载nginx配置,就支持以上后缀文件的下载了,一定不要忘记重新加载nginx的配置,否则新加的配置参数是不会生效的。