私はRailsアプリケーション(Redmine)を使用しています。これはNginxで動作します。添付ファイルをクリックすると、ブラウザ(Firefox、つまりChrome)からファイルをダウンロードするように求められます。ただし、txtをクリックすると-type attach私のブラウザはこのファイルをブラウザで開きます。
私が理解しているように、ブラウザでファイルを開くかダウンロードするかを決めるのはNginxの仕事です。どうすれば設定できますか?
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#を使用しますタイプ オーバーライドします(おそらくapplication/octet-streamに設定されます)。
Content-Type
ファイルの.txt
を変更しても機能する場合がありますが、ユーザーのブラウザが期待どおりに応答することを100%保証できないため、この問題を解決するにはやや危険な方法です。さらに、.txt
ファイルにバイナリファイルのラベルを付けることは誤解を招きます。
代わりに、ファイルを表示するのではなく、ブラウザにダウンロードを強制する標準的な方法を使用することをお勧めします。これは、attachment
のContent-Disposition
ヘッダーを使用することです( RFC 218 =、「 RFC 2616 」も参照してください。
たとえば、このnginx location
ブロックは、.txt
URIの下に/downloads/
ファイルを含むヘッダーを送信するため、ダウンロードが強制されます。
location ~ ^/downloads/.*\.txt$ {
add_header Content-Disposition "attachment";
}
したがって、構成に適した他の適切なマッチングなどを追加できます。
ダウンロード可能なファイルの場所を抽出し、そのコンテンツタイプをapplication/octet-stream
に設定する必要があります。
ダウンロード可能な販促資料(PDF、画像、一部のドキュメントが含まれますが、txtファイルでも動作するはずです)のサービスには、次の場所があります。
location /promomaterial/download/ {
add_header Content-Type application/octet-stream;
}
私たちが試みたすべてのブラウザは、それらを表示するのではなく、この場所からすべてのファイルをダウンロードします。