2017-12-09 10 views
0

.Net 4.6.1 C#ダウンロードする代わりに新しいタブでpdfファイルを開く.Web API

実行時にpdfファイルを生成し、正常にダウンロードできます。新しく作成したpdfファイルをダウンロードするのではなく、新しいタブで開きたいと思います。ここに私のコードは、(ウェブAPI 2.1方法)です:

public HttpResponseMessage ToPDF(string cn) 
    { 

     var stream = new MemoryStream(); 
      stream = GeneratePDF(); 


     var result = new HttpResponseMessage(HttpStatusCode.OK) 
     { 
      Content = new ByteArrayContent(stream.ToArray()) 
     }; 
     result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") 
     { 
      FileName = "file.pdf" 
     }; 
     result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 


     return result; 


    } 

私はこれが働くだろうと思ったが、それはしません。私はアンカータグにもtarget = "_ blank"を持っています。新しく生成されたpdfファイルを、ブラウザの代わりに新しいタブで開き、それをユーザのハードディスクにダウンロードしたいのですが?ありがとう

+1

コンテンツの配置を添付ファイルからインラインに変更する必要があります(btwには 'System.Net.Mime.DispositionTypeNames.Inline'の定数があります)。 http://www.iana.org/assignments/cont-disp/cont-disp.xhtml – ckuri

+0

@ckuriを参照してください。それはそれでした。私はあなたに適切な信用を与えることができるように答えとして投稿してください。ありがとうございます – BoundForGlory

+0

提案したとおり、私は答えとして投稿しました。 – ckuri

答えて

1

ほかに適切なMIMEタイプを設定するデビッドMkheyanの提案から、あなたもattachmentからinlineにコンテンツの配置を変更する必要があります。

result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue(System.Net.Mime.DispositionTypeNames.Inline) 
    { 
     FileName = "file.pdf" 
    }; 

https://www.iana.org/assignments/cont-disp/cont-disp.xhtmlattachment手段 "ユーザ制御ディスプレイ" とinlineによれば、 "自動的に表示されます"。

+0

すばらしい仕事相手! – BoundForGlory

0

application/octet-streamからapplication/pdfにメディアタイプを変更するだけでうまくいきます。また、HttpResponseMessageの代わりにFileResultに戻り値の型を変更することもできます。 result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");

+1

返信ありがとうございますが、それでもまだpdfをダウンロードして、新しいタブで開こうとしません。 – BoundForGlory

関連する問題