FastDFS使用之文件名称

FastDFS使⽤之⽂件名称
应⽤背景
⽂件被上传到Fast后Storage服务端将返回的⽂件索引(FID),其中⽂件名是根据FastDFS⾃定义规则重新⽣成的,⽽不是原始⽂件名,例如: group2/M00/00/89/eQ6h3FKJf_PRl8p4AUz4wO8tqaA688.apk
使⽤http下载时如不加处理,显⽰给⽤户的⽂件名会是这样的eQ6h3FKJf_PRl8p4AUz4wO8tqaA688.apk,这样的⽤户体验很不好。由于FastDFS不会存储原始⽂件名,也没有提供恢复原始⽂件名的⽅法,所以需要应⽤系统⾃⼰想办法恢复原始⽂件名。
解决⽅法
通过在项⽬中多次尝试,到⼀种较简单的实现⽅法,实现过程如下:
⼀. 应⽤系统在上传⽂件到FastDFS成功时将原始⽂件名和“⽂件索引(FID)”保存下来(例如:保存到数据库)。
acceptlanguage三. 在Nginx上进⾏如下配置,这样Nginx就会截获url中的参数attname,在Http响应头⾥⾯加上字段 Content-Disposition “attachment;filename=$arg_attname”。
location /group2/M00 {
root /data/store/data;
if ($arg_attname ~ "^(.*).apk") {
add_header Content-Disposition "attachment;filename=$arg_attname";
}
ngx_fastdfs_module;
}
四. 浏览器发现响应头⾥⾯有Content-Disposition “attachment;filename=$arg_attname”时,就会把⽂件名显⽰成filename指定的名称。
完整的请求和响应消息如下:
请求包:
Request URL:121.14.161.48:9030/group2/M00/00/89/eQ6h3FKJf_PRl8p4AUz4wO8tqaA688.apk?attname=filename.apk
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6
Connection:keep-alive
Host:121.14.161.48:9030
Referer:st.uae.uc/apps
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36
Query String Parametersview sourceview URL encoded
attname:filename.apk
返回包:
Response Headersview source
Accept-Ranges:bytes
Connection:keep-alive
Content-Disposition:attachment;filename=filename.apk Content-Length:21821632
Date:Thu, 28 Nov 2013 11:40:46 GMT
Last-Modified:Mon, 18 Nov 2013 02:48:19 GMT Server:nginx/1.4.3

本文发布于:2024-09-22 04:15:43,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/371659.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:响应   原始   恢复
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议