我正在为我工作的办公室的人力资源部门建立一个系统。这将是对我们开发的现有项目/员工管理应用程序的增强。有一些现有的功能可以处理如下所示的文档。这都是基于 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 来确定要公开哪些类方法。我的一个想法是省略对象身份查询字符串,但实际上传递二进制文档数据和 mime 类型,因此响应将告诉浏览器需要在客户端计算机上打开哪个应用程序。这是我应该指出的内部 Intranet 系统,我的经验非常有限,因此请原谅任何愚蠢/不良的思维习惯。
我的问题是;
考虑通过查询字符串传递二进制数据是一个坏主意吗?
是否有更好的方法来构建通用文档句柄,以在本地机器上打开相关应用程序(MS Office 和 PDF mime 类型)?
谢谢