Nginx提供的文件访问路径在浏览器默认为下载模式

524 阅读1分钟

背景

有个需求,需要提供一个下载地址给到前端,这里我们是根据nginx做的文件映射,核心配置如下:

  location /download {
      root /tmp;
      autoindex on;             #开启索引功能
      autoindex_exact_size off; # 关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)
      autoindex_localtime on;   # 显示本机时间而非 GMT 时
      
   }

这样就能提供一个文件访问路径给到前端比如:http://1.1.1.1:8444/download/XXX.mp4

但是这样前端无法直接下载文件,于是乎需要改造

解决方案

在这个配置下补充

  location /download {
      root /tmp;
      autoindex on;             #开启索引功能
      autoindex_exact_size off; # 关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)
      autoindex_localtime on;   # 显示本机时间而非 GMT 时
      add_header Content-Disposition "attachment;filename*=utf-8'zh_cn'$arg_n";
      
   }

将http头补充上述配置,即可解决问题。这样再次打开视频地址,就是下载格式了,像这样

image.png