【问题标题】:Send PDF from Angular to .NetCore server?将 PDF 从 Angular 发送到 .Net Core 服务器?
【发布时间】: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


【解决方案1】:

我会说,创建一个 JS 和一个 TS 对象,比如 Email,并添加一个属性,比如附件,然后发送和接收电子邮件对象。检查您是否可以打印您传递的电子邮件对象。

打字稿

emailObj: Email = new Email();//put this during class initializations
this.emailObj.attachment = this.generatePDF()
this.eServ.addPDF(this.emailObj).subscribe(res => {
        console.log(res);
      });

所以,服务将是

addPDF(emailObj: Email) {
    return this.http.post<Email>('/api/email/upload', pdf, { headers: this.headers });
  }

控制器

[HttpPost]
        public Task<IActionResult> upload([FromBody] Email eObj)
        { 
    Console.log(eObj.attachment);

}

【讨论】:

  • 是的,我想这是一种解决方法。我仍然不确定为什么字符串对象不起作用,但这似乎可以解决问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 2021-02-15
  • 2011-12-03
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 2018-02-16
相关资源
最近更新 更多