如何呈现Word、Excel和PowerPoint等文件供用户ASP.NET C#下载

本文关键字:用户 ASP NET 下载 文件 Word 何呈现 Excel PowerPoint | 更新日期: 2023-09-27 18:28:09

我正在开发一个ASP.NET C#应用程序,有一个表,我在其中定义了一个二进制列来存储文件(列名attFile),还保存了文件名、文件大小和Mimetype,大多数文件都是JPG、PNG、PDF,我可以用用户可以预览图像的方式向用户显示这些文件,但使用Excel、Word PowerPoint等文件,我不知道如何展示它们,以便用户可以下载,我这样做的方式是

View
@foreach (var item in Model)
{
    if (item.MimeType == "application/pdf")
    {
        <div>
            <object data="@Url.Action("MyImage", new { id = item.id })" 
                              type="application/pdf" 
                              width="250" height="150">
            </object>
        </div>
    }
    else if (item.fotoMimeType == "image/jpeg")
    {
        <div>
            <img src="@Url.Action("MyImage", new { id = item.id })" 
         alt="Picture" style="width:150px"  />
        </div>
    }
    else if (Excel, Word, PowerPoint)
    {
        don't know what to do
    }
}
Controller
public ActionResult MyImage(int id)
{
   AttFile xFile = _db.AttFile.SingleOrDefault(x => (x.id == id));
   return File(xFile.attFile, xFile.MimeType );
}

我的想法是显示一个图像,上面写着Excel文件、Word文件、PowerPoint文件,这样用户就可以下载这个文件,或者下载一个带有文件名的链接,但我不知道如何下载。

有人能在这个问题上帮忙吗?

如何呈现Word、Excel和PowerPoint等文件供用户ASP.NET C#下载

您可以使用此代码,会出现一个弹出对话框,询问用户是否要保存或打开文件:

    public void DownLoad(string FName)
    {
        string path = FName;
        System.IO.FileInfo file = new System.IO.FileInfo(path);
        if (file.Exists)
        {
            Response.Clear();
            Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
            Response.AddHeader("Content-Length", file.Length.ToString());
            Response.ContentType = "application/octet-stream";
            Response.WriteFile(file.FullName);
            Response.End();
        }
        else
        {
            Response.Write("This file does not exist.");
        }
    }

行:Response.ContentType="application/八位字节流";告知要下载哪种类型的文件。这种类型适用于docx文件。