gpt4 book ai didi

asp.net-mvc - MVC 将 ActionResult 保存到字节数组

转载 作者:行者123 更新时间:2023-12-02 19:40:38 25 4
gpt4 key购买 nike

我正在寻找一种将 MVC ActionResult 保存到字节数组(文件)的好方法。原因是我正在使用 Rotativa 将 HTML View 转换为 PDF。效果很好,并在浏览器中向我的用户返回 PDF。现在我想从服务器发送一封电子邮件,包括相同的 PDF 作为附件。为了发送电子邮件,我使用 ActionMailer.Net nuget 包。它可以选择将字节数组作为附件包含在内。

所以我需要将一个带有 PDF 文件的字节数组传递给发送邮件方法。但是返回 PDF 的操作将 ActionResult 作为返回类型,而不是 FileStreamResult(不幸的是)。我不太清楚为什么会做出这样的选择,但事实就是如此。

Rotativa 包使用 Wkhtmltopdf 来转换 HTML。我想我可以自己实现它,但这似乎毫无意义,因为我已经有一个方法可以准确返回我需要的内容;我只需要一种方法将该结果放入字节数组中。

最佳答案

您可以继承“ViewAsPdf”并创建一个方法来调用“ViewAsPdf”的一些 protected 方法:

public class ViewAsPdf2 : ViewAsPdf
{
public ViewAsPdf2(string viewName, object model) : base(viewName, model) { }
public byte[] GetByte(ControllerContext context)
{
base.PrepareResponse(context.HttpContext.Response);
base.ExecuteResult(context);
return base.CallTheDriver(context);
}
}

在你的行动中:

var pdf = new ViewAsPdf2("MyView", model);
var pdfByteArray = pdf.GetByte(ControllerContext);
SendEmail(pdfByteArray);
return null;

所以你可以使用byte[]来做你想做的事情,返回的将是PDF。

关于asp.net-mvc - MVC 将 ActionResult 保存到字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13396789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com