varbinary 形式のファイル名とファイルデータがある DB に Attachments テーブルがあります。C# 側では、このデータを文字列に変換し、MIMEType に応じて、ダウンロード可能な .xls/.pdf ファイルを作成する必要があります。これを行う最善の方法は何ですか?これを行うために ActionLink を使用できますか? 私は MVC を初めて使用するので、これに対する最善のアプローチがわかりません。任意の提案をいただければ幸いです。
3 に答える
文字列への変換をバイパスし、正しいmimeタイプを返すことだけを心配します。
この質問をチェックしてください:
mimeタイプを設定するには、コンテンツタイプを決定する必要があります。
これを行うために ActionLink を使用できますか?
はい。
C# 側では、このデータを文字列に変換し、MIMEType に応じて、ダウンロード可能な .xls/.pdf ファイルを作成する必要があります。
Content-Disposition ( http://msdn.microsoft.com/en-us/library/ms526989(v=exchg.10).aspx ) を応答ヘッダーに追加します。
Content-Disposition: 添付ファイル
添付ファイルを含むと指定された身体部分を表示するには、ユーザーの操作が必要です。通常、メッセージから分割されます。これらは通常、後でアクセスできるようにファイルとして保存されます。このヘッダーのオプション パラメータは、ファイル名、作成日、変更日、読み取り日、およびサイズです。
Content-Disposition: インライン
メッセージが開かれると、インライン コンテンツがユーザーに表示されます。インライン ボディ パーツは、マルチパート コンテンツ タイプに適用される規則に従って、メッセージに表示される順序で表示されます。マルチパート ボディ パーツにインライン ヘッダーがある場合、インライン指定はマルチパート全体に適用され、サブパートには適用されません。
コードを確認してください: https://stackoverflow.com/a/9610656/1241400
inline
*.pdf にはほとんどのブラウザで開くことができるため、他のファイル タイプには .pdf を使用できますattachment
。
私は以前に同じ種類のことをしなければなりませんでした。FileContentResult を返し、Urlmon.dll を使用して MIME タイプを決定し、コントローラー クラスの File メソッドhttp://msdn.microsoft.com/en-us/library/dd460208.aspxに渡します。 DB から取得した byte[] データ、および Urlmon.dll によって返された MIME タイプhttp://pinvoke.net/default.aspx/urlmon.FindMimeFromData、pinvoke.