1

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

File.WriteAllBytes(attachment.Name, Convert.FromBase64String(attachment.Data))

我将附件转储到文件中。我想要做的是有一个链接,这样当用户点击它时,附件就会下载。

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

谢谢

4

3 回答 3

2

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

 public ActionResult DownloadData(string fileNameOrWhatever)
 {
      byte[] fileData = ...;

      return File(fileData, "someMimeType", "downloadNameToBeDisplayed");
 }

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

<a href="/DownloadData/Something">Click me!</a>
于 2012-04-24T18:41:11.973 回答
0

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

于 2012-04-24T18:41:44.620 回答
0

我有一个项目,我在服务器上创建了一个 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();
    }
于 2012-04-24T18:44:55.390 回答