C#.netのmvcで、ファイル名のリンクから新規タブで該当のPDFファイルをブラウザで表示する処理を実現させたいです。
ブラウザはGoogle Chromeです。
ただし、ファイル格納場所が、サーバーからURL指定出来ない場所に固定されているため、一度読み込んだものを表示させようとしておりますが、上手くいきません。
以下2パターンの方法を試しております。
(※手書きメモを転記しているので入力ミスなどありましたらスルーしてください)
①ファイル名リンクをクリック後ファイルを読み込み「target="_blank"」で新規タブ表示
→課題点:ダウンロードになってしまいブラウザに表示ができない
html
1<!--実際は cshtml--> 2<a href="@Url.Action("GetPdf","FileCtrl",new{fileName="file.pdf"})" target="_blank">file.pdf</a> 3<!--リンククリックで下記C#へ-->
C#
1//FileCtrlController 2public ActionResult GetPdf(string fileName) 3{ 4 //[]内は仮表記 5 var filePath = [ファイルフルパス]+fileName; 6 byte[] data = System.IO.File.ReadAllBytes(filePath); 7 return File(data, "application/octet-stream", fileName) 8 //処理後、ファイル保存ダイアログが表示され、 9 //ブラウザに表示することが出来ない 10}
②ファイル名リンクをクリック後JavaScriptでwindow.open処理を実行し、新しいタブで別のViewを開く。開かれたViewでobjectタグを使用してPDFを埋め込み表示
→問題点:ChromeでPDFドキュメントが読み込めない現象発生中(IEでは表示される)
html
1<a href="JavaScript:OnclickFunction(略)">file.pdf</a> 2 3<script type="text/javascript"> 4 function OnclickFunction(略){ 5 window.open(略) 6 //詳細は省きます。。。次のHTMLコードのページ表示 7 } 8</script>
html
1<!--実際は cshtml--> 2<object data="@Url.Action("GetPdf","FileCtrl", new{fileName="file.pdf"})" type="application/pdf"> 3<!--下記C#の処理が実行されて埋め込みPDFが表示されるはずだが、 4現在「ドキュメントが読み込めませんでした」的なメッセージが表示されPDFが表示されない。 5(pdf Viewerのエリアは表示される)-->
C#
1//FileCtrlController 2public ActionResult GetPdf(string fileName) 3{ 4 //[]内は仮表記 5 var filePath = [ファイルフルパス]+fileName; 6 byte[] data = System.IO.File.ReadAllBytes(filePath); 7 return File(data, "application/pdf", fileName) 8}
詳細を省略しまくりで申し訳ありませんが、もし、不適切な点や他に実現できそうな方法がありましたらアドバイスを頂きたいです。
一番の理想は、埋め込み表示ではなく、新しいタブでPDFファイルがViewerで表示される状態です。
宜しくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/02 00:19
2017/02/02 00:30
2017/02/03 02:27
2017/02/03 05:00