网站TXT/BAT等文件强制下载设置

作者:FAWEI 发布时间: 2025-11-10 阅读量:337

日常网站托管 TXT 文本或 BAT 脚本时,常会遇到一个问题:​浏览器访问文件时直接打开(显示源码),而非弹出下载对话框核心原因是:​浏览器根据 Content-Type 响应头判断 “打开” 或 “下载”,默认 TXT/BAT 为文本类型(text/plain),会直接解析而不是下载

解决方法

方法一 Apache/Nginx 配置

如果文件托管在自己的 Apache 或 Nginx 服务器,直接通过配置文件修改响应头,无需额外脚本。​

1. Apache 服务器​

  1. 进入网站根目录,找到 .htaccess 文件(无则新建);​

  1. 添加以下代码(匹配所有 TXT/BAT 文件):

# 强制 TXT/BAT 文件下载
<FilesMatch "\.(txt|bat)$">
    Header set Content-Type "application/octet-stream"
    Header set Content-Disposition "attachment; filename*=UTF-8''%{REQUEST_FILENAME}e"
</FilesMatch>

3.保存后重启 Apache(systemctl restart apache2)

2. Nginx 服务器​

  1. 打开网站配置文件(如 /etc/nginx/sites-available/your-site.conf);​

  1. 在 server 块中添加:​

​# 匹配 TXT/BAT 文件,强制下载
location ~* \.(txt|bat)$ {
    add_header Content-Type application/octet-stream;
    add_header Content-Disposition "attachment; filename=$request_filename";
}
  1. 重启 Nginx(nginx -s reload)

方法二 在CDN中设置

上面提到了会直接解析而不是下载,核心原因是:​浏览器根据 Content-Type 响应头判断 “打开” 或 “下载”,默认 TXT/BAT 为文本类型(text/plain),会直接解析,那么我们在 CDN 中匹配我们所需要的文件,然后将其操作改为修改文件 HTTP 响应头,即可以完成这个操作

我们直接将 Content-Type 响应头设为 application/octet-stream 就可以了

网站TXT/BAT等文件强制下载设置 配图1