nginx中文件下载指定保存文件名的配置方法
一般在我们上传完资源文件之后,为了避免文件名冲突,会将文件名改成毫无意义的一段字符。这个字符,可能是MD5产生的,或者是其他方式产生的字符串。这时候,下载的时候,默认保存的文件名会是这段毫无意义的文件名(图1)。
其实,nginx是支持下载时重命名的,让文件名更加友好。
nginx也很容易配置:只要加入以下几行即可:
location ~* .*\.(doc|txt|jar|zip|apk)(\?.*)?$
{
if ($request_uri ~* ^.*\/(.*)\.(doc|txt|jar|zip|apk)(\?n=([^&]+))$) {
add_header Content-Disposition "attachment;filename=$arg_n.$2";
}
log_not_found off;
expires 30d;
break;
}
if那一行比较关键,这样配置,保证不传n参数的时候,就按原名字保存。不会出现空名字。
由于是以header形式指定,cdn会保存此头信息,内容分发时,也会是一样的表现。
apache读取不到get参数,因此配置不成功。不能应用到以apache作为文件服务器的情况,如果谁知道apache也可以配置,请告之,谢谢。
相关推荐
-
nginx不支持apk ipa文件下载的设置方法
.apk 和 .ipa分别是android应用和ios应用的扩展名. 如果在浏览器下载这些文件为后缀的文件时,会自动重命名为zip文件. 当然可以下载后手动修改后缀,依然可以安装. 如果想下载后缀直接就是apk ipa的,可以修改 /usr/local/nginx/conf目录下的mime.types 增加如下配置,重启nginx生效 复制代码 代码如下: application/vnd.android.package-archive apk; application/iphone pxl ip
-
在Nginx中使用X-Sendfile头提升PHP文件下载的性能(针对大文件下载)
很多时候用户需要从网站下载文件,如果文件是可以通过一个固定链接公开获取的,那么我们只需将文件存放到 webroot下的目录里就好.但大多数情况下,我们需要做权限控制,例如下载 PDF 账单,又例如下载网盘里的档案.这时,我们通常借助于脚本代码来实现,而这无疑会增加服务器的负担. 例如下面的代码: <?php // 用户身份认证,若验证失败跳转 authenticate(); // 获取需要下载的文件,若文件不存在跳转 $file = determine_file(); // 读取文件内容 $co
-
nginx中文件下载指定保存文件名的配置方法
一般在我们上传完资源文件之后,为了避免文件名冲突,会将文件名改成毫无意义的一段字符.这个字符,可能是MD5产生的,或者是其他方式产生的字符串.这时候,下载的时候,默认保存的文件名会是这段毫无意义的文件名(图1). 其实,nginx是支持下载时重命名的,让文件名更加友好. nginx也很容易配置:只要加入以下几行即可: 复制代码 代码如下: location ~* .*\.(doc|txt|jar|zip|apk)(\?.*)?$ { if ($request_uri ~* ^.*
-
Nginx和Apache几种防盗链配置方法实例
要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫 referer,采用URL的格式来表示从哪儿链接到当前的网页或文件.换句话说,通过referer,网站可以检测目标网页访问的来源网页,如果是资源 文件,则可以跟踪到显示它的网页地址.有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返 回指定的页面. Nginx防盗链的配置 1.nginx针对文件类型的防盗链配置
-
DataFrame中去除指定列为空的行方法
一次,笔者在处理数据时想去除DataFrame中指定列的值为空的这一行,采用了如下做法,但是怎么都没有成功: # encoding: utf-8 import pandas as pd import math import numpy as np data = pd.read_csv('mydata.csv') print len(data) for i in range(len(data)): if (data['导演'][i] == ''): data = data.drop(i) data
-
在nginx中使用geoip做区域限制的方法
该博客为工作笔记 环境: nginx version: nginx/1.14.0 centos version: centos7 需求如下: 通过IP区别国内或国外,从而跳转到不同的页面,最终用nginx的第三方module:geoip来实现,这就不说它的优势了,网上很多解释,下面看怎么配置 我的系统中是配置了nignx.repo的,我直接用yum来安装了geoip模块,没有用添加模块重编的方式 yum install nginx-module-geoip 下载geoip的数据库文件 cd /e
-
基于web项目log日志指定输出文件位置配置方法
首先我们定义一个可以在运行时动态的找出项目的路径WebAppRootKey,这么做的原因是为了在后面配置log4j输出文件路径的时候能随心配置. <context-param> <param-name>webAppRootKey</param-name> <param-value>amt.root</param-value> </context-param> 然后要定义项目log配置文件的路径以及log4j监听器 <contex
-
VMware虚拟机中Centos8的桥接静态IP配置方法
一.要保证网络连接方式是桥接 要选中复制物理网络连接状态 二.编辑网卡文件 vim /etc/sysconfig/network-scripts/ifcfg-ens160 最后的ifcfg-ens160 是我的网卡文件,具体咋找网卡文件网上一大堆就不说了 网卡文件内容 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static # 这里原来是dhcp 改成现在的static DEFROUTE=yes IPV4_FAILURE_
-
vue项目中进行svg组件封装及配置方法步骤
最近刚入新的公司,拿到项目之后,发现一个有趣的事情就是标题的icon是用svg来弄的,这篇文章彻底弄清楚怎么使用 1.创建vue项目(通过cli来搭建脚手架,该测试项目是用vue cli4进行配置的) 2.创建一个自定义组件 具体代码如下: <template> <svg :class="svgClass" aria-hidden="true" v-on="$listeners"> <use :xlink:href=
-
JS从一组数据中找到指定的单条数据的方法
下面小编给大家介绍基于js如何从一组数据中找到指定的单条数据.具体方法如下所示: 在一般情况下,我们会要求后端在列表的时候输出一堆列表的JSON数据给我们,然后我们把这堆数据循环,就能在前端上显示列表了. 而我们在内容页的时候,则要求输出一个内容页的JSON数据给我们,我们就可以做内容页了. 但是,有时候,数据并不是特别复杂,我们可能需要从列表的数据中指定其中的单条数据.怎么做呢? 标准答案,find方法 var json = [{"id":1,"name":&qu
-
JS中使用变量保存arguments对象的方法
迭代器(iterator)是一个可以顺序存取数据集合的对象.其一个典型的API是next方法.该方法获得序列中的下一个值. 迭代器示例 题目:希望编写一个便利的函数,它可以接收任意数量的参数,并为这些值建立一个迭代器. 测试代码好下: var it=values(,,,,,,,,); it.next();// it.next();// it.next();// 分析:由于values函数需要接收任意多个参数,这里就需要用到上一节讲到的构建可变参数的函数的方法.然后里面的迭代器对象来遍历argum
-
PHP实现将HTML5中Canvas图像保存到服务器的方法
本文实例讲述了PHP实现将HTML5中Canvas图像保存到服务器的方法.分享给大家供大家参考.具体实现方法如下: 一.问题: 在几年前HTML5还没有流行的时候,我们的项目经理曾经向我提出这样一个需求:让项目评审专家们在评审结束时用笔在平板电脑上进行电子签名.这需要我们评审软件里提供这样一个功能:打开浏览器,登录,进入评审意见页,页面最下部有个方块区域,用户在这里用触摸笔进行签名,然后这个签名将会保持的服务器上. 这样的一个需求在当时是让我大费周折,但如今想起来,如果用html5的canvas
随机推荐
- Python列表list数组array用法实例解析
- JavaScript String.replace函数参数实例说明
- Asp.net实现MVC处理文件的上传下载功能实例教程
- php自定义session示例分享
- Python列表(list)、字典(dict)、字符串(string)基本操作小结
- jquery图形密码实现方法
- 用ASP+DLL实现WEB方式修改服务器时间
- 批处理删除使用所有Windows Update功能的访问[图文+bat]
- myeclipse android环境搭建图文教程
- Android 中NumberPicker,DatePicker与DatePickerDialog中分割颜色的修改实例代码
- 标准的js无缝滚动效果
- Javascript 汉字字节判断
- JavaScript判断表单为空及获取焦点的方法
- eclipse构建和发布maven项目的教程
- 浅析C语言中的setjmp与longjmp函数
- Python的ORM框架中SQLAlchemy库的查询操作的教程
- js 倒计时(高效率服务器时间同步)
- winform实现限制及解除鼠标移动范围的方法
- PHP实现git部署的方法教程
- 如何在vue中使用ts的示例代码