2009-06-02 9 views
5

ブラウザで開くPDFを送信するにはどうすればよいですか?私はこれを試してみましたが、それは尋ねることなくファイルをダウンロードします(ieとfirefoxの両方)。ブラウザプラグインでpdfを開く

public ActionResult GetIt() 
{ 
    var filename = @"C:\path\to\pdf\test.pdf"; 
    // Edit start 
    ControllerContext.HttpContext.Response.AddHeader("Content-Disposition", String.Format("inline;filename=\"{0}\"", "test.pdf")); 
    // Edit stop 
    return File(filename, "application/pdf", Server.HtmlEncode(filename)); 
} 

上記の編集を追加した後、それはうまく動作します。ありがとうございます。

答えて

6

Content Disposition HTTPヘッダーをインラインに設定して、PDFプラグインが使用可能になった場合にブラウザで使用するように指定する必要があります。

何かのように:内容 - 配置:インライン;ファイル名= test.pdf

プラグインの使用を強制することはできません。これはブラウザの判断によるものです。

1

これは、クライアントがPDFファイルをどのように処理するかに依存していると思います。 Adobe Readerがブラウザプラグインのファイルを開くように設定している場合、そのプラグインを実行しますが、ファイルを開くのではなくダウンロードするように設定している可能性があります。 いずれの場合でも、ユーザーのマシンでPDFファイルを開く方法を制御する方法はありません。

+0

いいえ、私のクライアントは他のウェブサイトで期待通りに動作します。時にはそれがダウンロードされ、時にはAdobeのプラグインで開かれることもあります。おそらく、送信されたヘッダーと何か関係があります。 – Nifle

+0

ええ、それはヘッダーです - 下記のコメントを参照してください。 –

2

この(他のヘッダに加えて)は、プレーンな.NET Webアプリケーションに私のためのトリックを行います。

Response.AddHeader( "のContent-処分"、String.Formatの( "インライン;ファイル名=" "{0}" "" ""、FileName))

私はMVCに精通していませんが、うまくいけば、これが役に立ちます。

+2

あなたは添付ファイルではなくインラインに処理を設定する必要があると思います。添付ファイルを使用すると、ファイルがディスクに保存されます。 –

+0

はい、申し訳ありませんが、私のコピー/ペーストで素早く。 Response.AddHeader( "Content-Disposition"、String.Format( "inline; filename =" "{0}" ""、FileName)新しいウィンドウでこのウィンドウを開くと、 ) – ScottE

関連する問題