ファイルがデータベースに保存されていることを考慮して、asp.net mvcアプリケーションで.docx、.doc、.xls、または.pptファイルを開くにはどうすればよいですか。次の行を書くことでメモ帳でcssファイルを開くことができます
return File(("~/Content/Site.css"), ("text/css"));
ファイルがデータベースに保存されていることを考慮して、asp.net mvcアプリケーションで.docx、.doc、.xls、または.pptファイルを開くにはどうすればよいですか。次の行を書くことでメモ帳でcssファイルを開くことができます
return File(("~/Content/Site.css"), ("text/css"));
Fileユーティリティメソッド(FileResultの場合)には、ストリームまたはバイト配列を受け取るオーバーロードがあります(db内のファイルはストリームまたはバイト配列として提供できます。
var bytes = db.GetFile(); //i'm assuming this method will return a byte array
return File(bytes,
"application/vnd.openxmlformats-officedocument.wordprocessingml.document");
特定のファイル名を使用してファイルをダウンロードするには、別のオーバーロードを使用できます。
return File(bytes,
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"filename.docx");
「ファイルを開く」必要はないように思えますが、クライアントがアプリケーションからファイルをダウンロードできるようにする必要があります。ダウンロードしたファイルをクライアントが行う場合よりも必要です。ほとんどの場合、ブラウザは保存/開くダイアログを表示しますが、それはエンドユーザークライアント(おそらく彼はいくつかのプラグインをインストールしていますか?)の仕事であり、サイトの仕事ではありません。
ただし、サイトにオフィスを提供するように指示するために、ここにコンテンツタイプのリストがあり、興味のあるものは次のとおりです。
docx -> "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
pptx -> "application/vnd.openxmlformats-officedocument.presentationml.presentation"
xlsx -> "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
したがって、(擬似コード)のようなことをする必要があります
Dictionary<string, string> contentTypes = new Dictionary<string, string>();
contentTypes.Add("docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document");
contentTypes.Add("pptx","application/vnd.openxmlformats-officedocument.presentationml.presentation");
contentTypes.Add("xlsx","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");;
string fileType = ...;
var result = new File(fileContents, contentTypes[fileType],"fileName."+fileType);
return result;