【发布时间】:2021-03-05 17:46:10
【问题描述】:
因此,我使用 jsPDF 创建了一个 PDF,并希望将其发送到 .NetCore 服务器。我在前端将文件转换为二进制字符串,然后通过 C# 将其转换回 PDF。当服务调用控制器时,程序挂起,因为它在传递的参数中找不到数据。
这是我的组件
this.eServ.addPDF(this.generatePdf()).subscribe(res => {
console.log(res);
});
generatePdf() : string {
const doc = new jsPDF();
doc.text("somestuff", 40,30);
var binary = doc.output();
return btoa(binary);
}
服务
addPDF(pdf: string) {
console.log(JSON.stringify(pdf))
return this.http.post('/api/email/upload', pdf, { headers: this.headers });
}
控制器
[HttpPost]
public Task<IActionResult> upload(string mailMessage)
{
Console.WriteLine("upload");
var pdfBinary = Convert.FromBase64String(mailMessage); //here's the error
using (var fs = new FileStream(fileName, FileMode.Create))
using (var writer = new BinaryWriter(fs))
{
writer.Write(pdfBinary, 0, pdfBinary.Length);
writer.Close();
}
return null;
}
错误在控制器中,并抱怨 mailMessage 为空,因此无法转换。 在前端,二进制文件在发送到控制器时打印出一些很好的东西。 另一个注意事项:路由和其他功能工作正常,并且“上传”获取打印到控制台。
另外,我什至对将 PDF 发送到服务器的其他方式持开放态度,不一定要坚持二进制方式!
【问题讨论】:
-
您是否考虑过在
FormData实例中发送 PDF 并随后在相应的 WebAPI 方法中对其进行适当解析?过去,当我想将二进制数据从客户端成功转发到服务器时,我就使用过这种方法。
标签: asp.net .net angularjs asp.net-mvc .net-core