我有一些带有附件的 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();
}