首先,在上传文件的服务中为了保证上传的文件不会有文件名冲突的情况,一般会在服务器进行文件名重命名为乱码
但是下载的时候为了效率问题不会直接走tomcat而是走Nginx进行,那怎么让下载的时候拿到原始文件名呢?
location ~* .*\.(rar|zip|doc|docx|ppt|pptx|xls)$ {
if ($request_uri ~* ^.*\/(.*)\.(\w+)(\?filename=([^&]+))$) {
add_header Content-Type "application/octetstream";
add_header Content-Disposition "attachment;filename*=utf-8'zh_cn'$arg_filename";
}
expires 30d;
}
在Nginx配置中添加以上配置,然后在文件下载链接加上?filename=XXX就行了。