2016-10-24 22 views
0

私の要件は、ダウンロードリンクをクリックすると新しいウィンドウ/タブでファイルを開くことです。ファイルは、以下のポストで提案されているように、コンテンツの処理を「インライン」に設定しても、常にダウンロードされます。MVC.Netダウンロードする代わりに新しいウィンドウでファイルを開く

How to open PDF file in a new tab or window instead of downloading it (using asp.net)?

私のHTTPレスポンスは

HTTP/1.1 200 OK 
Cache-Control: private, s-maxage=0 
Content-Type: application/octet-stream 
Server: Microsoft-IIS/7.5 
X-AspNetMvc-Version: 5.2 
content-disposition: inline;filename=FileName.pdf 
X-AspNet-Version: 4.0.30319 
X-Powered-By: ASP.NET 
Content-Length: 141954 

私のコントローラのアクションは以下の通りです -

public async Task<FileContentResult> Index(string fileName) 
    { 
     byte[] document = await getFileContent("SomePathForTheFile"); 
     HttpContext.Response.AddHeader("content-disposition", "inline;filename=" + document.FileName); 
     return File(document, "application/octet-stream"); 
    } 

提案したばかりのではなく、新しいタブ/ウィンドウに自動的に開いているファイルを作成します大きな助けになるでしょう!ありがとう!

+0

コンテンツタイプをapplication/pdfに設定してください –

+0

ありがとうございます!それは私のために働いた。 – jkr

答えて

1

について言及する必要はありません。

1.content-処分が

2.コンテンツタイプは、対応するタイプに設定する必要がありますインラインに設定する必要があります - 新しいウィンドウで開くファイルのために行われなければなら

2つのこと

アプリケーション/ PDF - - pdfファイルのための

アプリケーション/ XML - XMLファイルの

APPLICダウンロードされたファイルへation/vnd.ms-excel - xlsファイルなど。

1

次のコードを試してください。

@Html.ActionLink("Home","Index",null,new { @target="_blank" }) 

我々はビューモードに戻ってきているので、答えを見つけ、ヘッダー応答

public async Task<FileContentResult> Index(string fileName) 
    { 
     byte[] document = await getFileContent("SomePathForTheFile"); 
     return File(document, "application/octet-stream"); 
    } 
+1

こんにちは、 'application/octet-stream'の代わりにコンテンツタイプを 'application/pdf'に設定した場合にのみ、私はそれを動作させました。あなたの提案をありがとう。 – jkr

関連する問題