私が勤務するオフィスの人事部門向けのシステムを構築しています。これは、当社が開発した既存のプロジェクト/スタッフ管理アプリケーションを拡張するものです。以下のようなドキュメントを処理する既存の機能がいくつかあります。これはすべて C#/ASP.NET ベースです。
//Check for document being available
if (ed.ContentType == null || ed.DocumentData == null)
{
Response.Redirect(Request.UrlReferrer.ToString());
}
else
{
strExtenstion = ed.ContentType.ToString();
strFilename = ed.Filename.ToString();
docData = ed.DocumentData;
byte[] bytFile = (byte[])docData.ToArray();
Response.Clear();
Response.Buffer = true;
if (strExtenstion == ".doc")
{
Response.ContentType = "application/vnd.ms-word";
}
else if (strExtenstion == ".docx")
{
Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
}
else if (strExtenstion == ".pdf")
{
Response.ContentType = "application/pdf";
}
Response.AddHeader("content-disposition", "attachment;filename=" + strFilename.ToString());
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Page.Response.OutputStream.Write(bytFile, 0, bytFile.Length - 1); //Drop final byte to enable inclusion of MS Office 2007 types
Response.Flush();
Response.Close();
Response.End();
}
次のように処理できるドキュメントの種類ごとにクラスがあります。ニュース ドキュメント、経費ファイル、ビジネス プロシージャ、およびスタッフの評価/レビューを処理するクラスを作成しました。依存しない汎用ドキュメントハンドラーを作成できるようにしたいクエリ文字列値に応じてクラスのインスタンスを呼び出して、オブジェクトを決定します。ドキュメント ID をクエリ文字列と共に渡すだけで、どのクラス メソッドを公開するかを決定できます。私が考えた 1 つのアイデアは、オブジェクト ID クエリ文字列を省略し、実際にはバイナリ ドキュメント データと MIME タイプを渡して、クライアント マシンで開く必要があるアプリケーションをブラウザに通知するというものでした。これは私が指摘しなければならない社内のイントラネット システムであり、私の経験は非常に限られているため、ばかげた/貧弱な思考習慣を許してください。
私の質問は次のとおりです。
クエリ文字列を介してバイナリ データを渡すことを考えるのは悪い考えですか?
関連するアプリケーションをローカル マシン (MS Office および PDF MIME タイプ) で開く汎用ドキュメント ハンドルを作成するより良い方法はありますか?
ありがとう