3

ファイルがデータベースに保存されていることを考慮して、asp.net mvcアプリケーションで.docx、.doc、.xls、または.pptファイルを開くにはどうすればよいですか。次の行を書くことでメモ帳でcssファイルを開くことができます

return File(("~/Content/Site.css"), ("text/css"));
4

2 に答える 2

1

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");
于 2012-12-31T08:38:24.370 に答える
0

「ファイルを開く」必要はないように思えますが、クライアントがアプリケーションからファイルをダウンロードできるようにする必要があります。ダウンロードしたファイルをクライアントが行う場合よりも必要です。ほとんどの場合、ブラウザは保存/開くダイアログを表示しますが、それはエンドユーザークライアント(おそらく彼はいくつかのプラグインをインストールしていますか?)の仕事であり、サイトの仕事ではありません。

ただし、サイトにオフィスを提供するように指示するために、ここにコンテンツタイプのリストがあり、興味のあるものは次のとおりです。

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;
于 2012-12-31T08:50:35.377 に答える