2016-08-20 6 views
0

ASP.NET MVC 4アプリケーションはファイルをデータベースに格納し、ダウンロードすることができます。自動オープンで任意のファイルタイプをダウンロードする方法

Postgresのテーブルdokumarhは、2つの列

  • バイナリデータとして
  • コンテンツbytea型のファイルの内容を使用して投稿されたファイルのファイル名のテキスト名を持っています。

アプリケーションでは、ブラウザからファイルをダウンロードできます。ダウンロードしたファイルは、その拡張機能のデフォルトのOSアプリケーションを開くはずです。単語の例、DOC、Excelのxlsファイル、メモ帳のためのtxtなど

この機能は、コントローラ

を使用して実装され

 public FileStreamResult ShowDocument(string filename) 
     { 
      var manus = Db.QuerySingle(@" 
select filename, content 
from dokumarh 
where [email protected] 
", filename); 
      return new FileStreamResult(new MemoryStream(manus.content), "???") 
      { 
       FileDownloadName = manus.filename 
      }; 
     } 

MVCのfilestreamresultが付いた送信されたパラメータおよびコンテンツタイプを必要とする「???」

アップロード時には、ファイル名のみが使用可能です。コンテンツタイプはありません。

適切なコンテンツタイプを指定するにはどうすればよいですか?または、コンテンツタイプを指定せずにファイル名だけを返すことは可能ですか?または、ファイル拡張子からコンテンツタイプを見つけることができるMVCメソッド、データベース、またはライブラリがありますか?

+1

あなたは[MimeMapping]使用することができます(https://msdn.microsoft.com/en-us/libraryが含まれています/system.web.mimemapping.aspx)クラス –

+0

ああ!私はそれについて知らなかった。ありがとう – Shyju

+0

@StephenMueckeこれは問題を解決します。あなたはそれを答えとして書いて、私がマークしupvoteすることができます。 – Andrus

答えて

1

System.Web.MimeMappingの静的GetMimeMapping()メソッドを使用して、ファイル名のMIMEマッピングを返すことができます。クラスは、すべての既知の拡張子と関連するMIMEタイプ

例えば

を含むプライベート・ディクショナリ

string fileName = "myfile.pdf"; 
string MineType = MimeMapping.GetMimeMapping(fileName); // returns "application/pdf" 
関連する問題