Nginx配置txt、pdf、doc、xls等文件直接下载或在线预览的方法

您所在的位置:网站首页 pdf无法显示预览文件 Nginx配置txt、pdf、doc、xls等文件直接下载或在线预览的方法

Nginx配置txt、pdf、doc、xls等文件直接下载或在线预览的方法

#Nginx配置txt、pdf、doc、xls等文件直接下载或在线预览的方法| 来源: 网络整理| 查看: 265

nginx也可用来作为附件服务器使用,毕竟nginx对静态文件支持较好,那么直接贴网址直接访问想下载,但是问题就来了,各大浏览器都针对,图片 txt,pdf,都是直接打开的,没法弹出另存为按钮。

解决思路就是,告诉浏览器这个文件需要下载而不是直接打开

1、下载方式

使用Nginx时,如果要让一些附件比如 txt,pdf,doc等不直接在浏览器打开,而是 弹出另存为的对话框(也就是下载) 则可以在nginx的加上头配置如下:

代码如下:

if ($request_filename ~* ^.*?\.(txt|pdf|doc|xls)$){ add_header Content-Disposition: 'attachment;'; }

关键,$request_filename 是nginx变量文件名称,正则表达式,是匹配已.所需文件类型,这样就在响应中告诉浏览器可以下载了 如果客户端请求的文件以txt、pdf、doc、xls为后缀的话则会让浏览器出现另存为对话框。

2,预览方式

因为项目需要下载和预览,下载时能下载了但是预览也都变成下载了,这个有点悲催,似乎两个不能同时存在.

预览的思路还是和下载一样告诉浏览器我要预览这文件不许下载.

这里用到$request_uri,这个变量是访问的url地址,获取到url地址那么我们就可以在url上添加参数来辨别我是预览文件

代码:

server { #监听的端口 listen 80; server_name localhost; location / { root html; set $flag 0; if ($request_filename ~* ^.*?.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx|jpg|png)$){ set $flag 1; } #如果带有view说明是预览 if ($request_uri ~* view$){ set $flag 2; } if ($flag = 1){ add_header Content-Disposition: attachment; } index index.html index.htm; }

这里$flag nginx自定义的一个变量,为什么要两个if来判断,这里也就不解释了

这样在预览的url上添加一个以view结尾的参数就可以实现预览功能了

转载自:https://www.bnxb.com/nginx/26955.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3