Answers:
txt扩展名的默认类型为text / plain。mime.types文件中描述了此行为。使用http://nginx.org/en/docs/http/ngx_http_core_module.html#default_type或http://nginx.org/en/docs/http/ngx_http_core_module.html#types覆盖它(可以设置为application / octet) -流)。
更改Content-Type
的.txt
文件可以正常工作,但它是解决这个问题的一个很危险的方式,因为你不能保证100%,用户的浏览器会回应你如何期望。而且,将.txt
文件标记为二进制文件具有误导性。
相反,我建议使用标准方法来强制浏览器下载而不是显示文件,即使用Content-Disposition
具有attachment
(RFC 2183,另请参见RFC 2616)值的标头。
例如,此nginx location
块将使用URI .txt
下的文件向下发送此类标头,/downloads/
因此将被迫下载:
location ~ ^/downloads/.*\.txt$ {
add_header Content-Disposition "attachment";
}
因此,您可以添加其他适合您的配置的匹配项等。
Content-Disposition
Chrome浏览器中的骇客可能会开始向控制台说脏话,甚至停止从页面下载任何文件。它说:Thinhgs(带有黄色三角形),例如:"Resource interpreted as Document but transferred with MIME type image/png:"
您需要提取可下载文件的位置,并将其内容类型设置为application/octet-stream
。
我们在服务的以下位置提供了可下载的宣传资料(包括pdf,图像和一些docs,但我确定它也可以与txt文件一起使用):
location /promomaterial/download/ {
add_header Content-Type application/octet-stream;
}
我们尝试的每种浏览器都从该位置下载所有文件,而不是尝试显示它们。