MVC3 Razor 提供指向内存(不在磁盘上)中的文件的链接



我有一些带有附件的 EML 文件。 我已经解析了 EML 文件拉出附件,如果我这样做:

File.WriteAllBytes(attachment.Name, Convert.FromBase64String(attachment.数据))

我得到附件转储到一个文件。 我想做的是有一个链接,以便当用户单击它时,附件会下载。

如果它是磁盘上已经存在的文件,这很容易,但我有这个 base64 编码的字符串,我可以将其转换为字节数组。 我怎样才能获取这个base64编码的字符串(或转换后的字节数组)并直接生成指向它的链接?

谢谢

您将返回一个 FileResult 类,其中包含来自其他操作方法的数据:

 public ActionResult DownloadData(string fileNameOrWhatever)
 {
      byte[] fileData = ...;
      return File(fileData, "someMimeType", "downloadNameToBeDisplayed");
 }

然后,您的链接将指向此处:

<a href="/DownloadData/Something">Click me!</a>

这是 MVC 吗?您可以创建一个返回FileStreamResult的控制器方法,创建一个操作以链接到它并将数据写入其中。

我有一个项目,我在服务器上创建了一个 Excel 文档,当用户导航到特定操作时,他们将收到该文件作为下载。 这是我正在使用的代码,我认为您可以根据需要重构它:

    public void GetExcel(string id)
    {
        ExcelPackage p = new ExcelPackage(); 
        //code to add data to the document            
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.AddHeader("content-disposition", "attachment;  filename=BitlyReport.xlsx");
        MemoryStream stream = new MemoryStream(p.GetAsByteArray());
        Response.OutputStream.Write(stream.ToArray(), 0, stream.ToArray().Length);
        Response.Flush();
        Response.Close();
    }

相关内容

  • 没有找到相关文章

最新更新