2011-10-05 7 views
5

私のコントローラアクションの1つが、ファイルをユーザに返します。私は、ファイルの種類に関係なく、ユーザにダウンロード(開く/保存)ダイアログが表示されるようにしたいと思います。これは、ファイルの種類が.doc、.docx、.xlsxなどの場合は正常ですが、ファイルが.txt、.xps、.pdf(時々)、または.htmlの場合、ブラウザで開きます。Asp.net MVC FileContentResult - ブラウザで開けないようにする

ファイルがブラウザで開かれないようにする方法はありますか?現在のページから離れずに別のウィンドウで開くことができますか?

ファイルのリクエストは、jQueryの$.ajax({})を使用して行われます。

関連する:応答文字列としてファイルのconentを受け取るAJAX呼び出しが、this ansewrによって説明されているのに対して、ブラウザが要求を処理してポップアップを表示することを説明しますが、この質問はブラウザでファイルを一度それが受信されると特定の方法。

答えて

5

私はあなたがクライアント側のコマンドまたは設定でこれを行うことはできないと思います。すべてのファイルに対してコンテンツタイプがapplication/octet-streamであるように、サーバー上で何かを行う必要があります。それ以外の場合、ブラウザは受信ファイルを見て、独自のルールと機能に基づいて何をすべきかを決定します。

、あなたのサーバー上でこれを行うことができる場合、これは、残念ながら、私は避けるようにしようとしているものです `アプリケーション/ unknown`、同じ結果が得られ"attachment; filename=whatever.xyz"

+0

"Content-Disposition"ヘッダを設定してみてください。ユーザーの便宜のために、1回のクリックでファイルを開くことを許可するのが最善の方法です(現在のブラウザウィンドウには表示されません)。 – yoozer8

+0

サーバーでこれを行うことができる場合は、「Content-Disposition」ヘッダーを「attachment; filename = whatever.xyz」に設定してみてください。 – Ray

+0

これはまさにそれです。ありがとう。 – yoozer8

関連する問題