response header 设置 限速
来源:互联网 发布:如何才能进去sci数据库 编辑:程序博客网 时间:2024/05/18 00:18
其实fdfs可以传入一个filename参数,指定文件名。。
M00/00/00/fwAAAVGMateAafjTAAAABBW-xbM368.txt?filename=test.txt
这样下载时用户将得到test.txt文件名啦。
////以下内容仅供娱乐
首先搭好fastdfs
然后安装nginx 和 fastdfs-nginx模块
配置好nginx
这里网上有详细教程。
现在问题是,我们下载文件都是fdfs转换后的文件名,这对于用户来说是不友好的。
比如用户通过网站上传一个 小说.txt 的文件,然后提交到fdfs后,文件名将变成一串字母的组合。
当其他用户下载的时候,得到的文件却不是 小说.txt ,很不友好。
这里有解决方案。
首先,你可以通过网站数据库保存文件的原来文件名。
然后下载的时候,可以通过php 用readfile()从真实路径读取文件,输出的时候通过指定head头来改变文件名。
但是用readfile()带来了额外的I/O开销,流量一大,会加重服务器负担。
这里还有一种办法,那就是通过linux自带的sendfile功能,让nginx直接从真实地址读取文件并发送给用户,并且还可以重命名。
需要做的就是在 download.php 中,写入以下头:
header("Content-Disposition: attachment; filename= 重命名文件名.txt");
header("Content-Type: application/octet-stream");
header('X-Accel-Redirect: M00/00/00/fwAAAVGMateAafjTAAAABBW-xbM368.txt'); //fdfs文件路径
header("X-Accel-Buffering: yes");
header("X-Accel-Limit-Rate :102400"); //速度限制 Byte/s
//header("Accept-Ranges: none");//单线程 限制多线程
这样就ok了,当你在浏览器中打开download.php时,php输出这些头信息,会被nginx捕捉到,然后直接重定向到X-Accel-Redirect这个文件,直接发送给用户,同时filename头也是生效的。
这样做不仅隐藏了真实文件地址,而且可以重命名文件,很好,很强大!
备注:
在 nginx配置文件中
location /M00/
{
internal;
root /fdfs_storge/data/;
ngx_fastdfs_module;
}
这里面如果加上internal;表示这个url只允许内部访问,这时候你再直接从浏览器中下载fdfs文件,将提示404错误。只能通过download.php下载。
- response header 设置 限速
- Http Request header/Response header
- nginx limit_req限速设置
- nginx limit_req限速设置
- nginx 限速设置
- tomcat response header outOfBounds
- HTTP Response Header Fields
- HTTP Request/Response header
- fiddler修改response header
- 文件下载中设置response的Header中的文件名为ISO-8859-1
- C# Http Response Header 打印
- Http Request Response Header 说明
- restful controller response header 配置
- response header less的问题
- Quidway AR 28-11 限速设置
- Libcurl库常用接口使用说明,限速设置
- Libcurl库常用接口使用说明,限速设置
- Libcurl库常用接口使用说明,限速设置
- MFC文件遍历类CFileFind例程
- storyboard 学习笔记(一)
- 美国传奇童星-秀兰-邓波儿
- myeclipse的编译和运行环境不一样引发webService异常
- 使用 HTML5 数据库和离线功能
- response header 设置 限速
- NYOJ 108 士兵杀敌(一)
- python的包管理系统
- document.selection 对象含义及简单应用实例
- 源码资料下载学习地址
- cocos2d-x v2.2的那些坑
- HTML默认样式表CSS属性
- 在ios真机上运行cocos2d-html5-2.2自带的HelloHTML5World
- Burpsuite导出log配合Sqlmap批量扫描注入点