从byte []打开任何文件类型

时间:2013-01-10 19:41:12

标签: c# asp.net file-upload

我有一个应用程序,允许用户上传证书并将其附加到系统内的人员。目前它只写为接受.PDF文件,但现在客户希望能够灵活地将任何类型的文档上传到系统中。我已经设置了数据库来保存byte []文件和文件扩展名,但是我不知道如何使系统足够智能化以便灵活地打开我抛出的任何文件类型而不用硬编码所有的实例。有什么想法吗?

编辑: 目前我正在做以下事情。

private void createPDF(byte[] file, string Name)
{
    int fileSize = file.Length;

    Response.AppendHeader("content-length", fileSize.ToString());
    Response.ContentType = "application/pdf";
    if (!Name.Contains("."))
        Name = Name + ".pdf";
    Response.AddHeader("Content-Disposition", "attachment; filename=" + Name);
    Response.BinaryWrite(file);
    //Response.Clear();
    Response.Flush();
    Response.End();
}

但是,我现在需要发送扩展程序并将其打开。该文档需要能够由最终用户下载。我将限制上传不允许任何恶意文件扩展名,这是一个给定的。谢谢你们,这个流感病毒正在踢我的屁股,我想不出来......

1 个答案:

答案 0 :(得分:2)

octet-stream mime-type应该有效。

private void createFILE(byte[] file, string Name)
{
    int fileSize = file.Length;

    Response.AppendHeader("content-length", fileSize.ToString());
    Response.ContentType = "octet-stream";
    if (!Name.Contains("."))
        Name = Name + ".(your_extension)";
    Response.AddHeader("Content-Disposition", "attachment; filename=" + Name);
    Response.BinaryWrite(file);
    Response.Flush();
    Response.End();
}