gpt4 book ai didi

javascript - 如何将文件和属性发送到 ASP.NET MVC 中的 Controller 并接收动态生成的 PDF 作为二进制作为响应?

转载 作者:行者123 更新时间:2023-12-01 02:33:35 24 4
gpt4 key购买 nike

我已经面临这个困境好几天了,我真的无法理解这个问题。

我必须调用一个接收两张图片和3个字符串作为参数的操作,该函数将使用itextsharp生成一个pdf,将其保存在服务器中并将二进制数组返回为

return File(bytes, "application/pdf", "mobile.pdf");

我试图使用ajax来接收这样的二进制文件:

 $.ajax({
url: "/Home/PDF",
type: "POST",
dataType: 'json',
data: {
Id : $("#ID").val(),
String : $("#String").html(),
Type: type,
Image: Item,
Image2: Item2,
},
success: function (data) {
if(data != null)
{
//Something
}
},
});

事实上,我可以看到我已经通过网络选项卡收到了二进制信息,但我不知道如何将其作为 PDF 显示给用户,我尝试成功的任何事情最终都不会发生或者我收到内部服务器错误。

我需要传递的图片和参数是在 View 中动态生成的

Controller 上的操作可以大致概括如下:

public ActionResult PDF(string Id, string String, string Type, string Image, string Image2)
{

System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
//Code...

byte[] bytes = memoryStream.ToArray();

return File(bytes, "application/pdf", "mobile.pdf");
}

任何帮助将不胜感激。谢谢大家。

最佳答案

如果您以表单提交的形式发送此请求,则浏览器应正确下载 pdf 文件。这对于 ajax 请求来说是不可能的。这是您可以使用的辅助函数。

function sendFormRequest(url, nameValuePairs) {
var form = document.createElement('form');
form.method = 'POST';
form.action = url;
for (var v in nameValuePairs) {
var input = document.createElement('input');
input.name = v;
input.value = nameValuePairs[v];
form.appendChild(input);
}
document.body.appendChild(form);
form.submit();
}

你可以像这样使用它:

sendFormRequest("/Home/PDF", {
Id : $("#ID").val(),
String : $("#String").html(),
Type: type,
Image: Item,
Image2: Item2,
});

关于javascript - 如何将文件和属性发送到 ASP.NET MVC 中的 Controller 并接收动态生成的 PDF 作为二进制作为响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48123987/

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