解决方法
通过在项目中多次尝试,找到一种较简单的实现方法,实现过程如下:
一. 应用系统在上传文件到FastDFS成功时将原始文件名和“文件索引(FID)”保存下来(例如:保存到数据库)。
二. 用户点击下载的时用Nginx的域名和FID拼出url,然后在url后面增加一个参数,指定原始文件名。例如:http://121.14.161.48:9030/group2/M00/00/89/eQ6h3FKJf_PRl8p4AUz4wO8tqaA688.apk?attname=filename.apk
三. 在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; }
-----------------------------------------------------------------------
通过nginx请求文件时,url后面带了filename参数设置返回的文件名。
但是当文件名过长时报错:
ERROR - file: /usr/local/fastdfs-nginx-module/src/common.c, line: 614, uri length: 276 is too long, >= 256
修改该文件中对文字长度的限制
-------------
nginx开启预览
autoindex on;
gitlab 的守护线程 重启nginx命令
gitlab-ctl restart nginx