我有一些附件的EML文件。我解析了拉出附件的EML文件,如果我这样做:
File.WriteAllBytes(attachment.Name,Convert.FromBase64String(attachment.Data))
我将附件转储到文件中。我想要做的是有一个链接,以便当用户点击它时,附件下载。
如果它的文件已经在磁盘上就足够了,但是我有这个base64encoded字符串,我可以将其转换为字节数组。如何获取此base64encoded字符串(或转换后的字节数组)并直接生成链接?
谢谢
答案 0 :(得分:2)
您将使用其他一些操作方法中的数据返回FileResult
类:
public ActionResult DownloadData(string fileNameOrWhatever)
{
byte[] fileData = ...;
return File(fileData, "someMimeType", "downloadNameToBeDisplayed");
}
您的链接将指向此处:
<a href="/DownloadData/Something">Click me!</a>
答案 1 :(得分:0)
这是MVC吗?您可以创建一个返回FileStreamResult
的控制器方法,创建一个链接到它的操作并将数据写入。
答案 2 :(得分: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();
}