将 PDF 从 Angular 发送到 .Net Core 服务器?
Send PDF from Angular to .NetCore server?
所以,我使用 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 发送到服务器,不一定要坚持二进制方法!
我会说,创建一个 JS 和一个 TS 对象,说电子邮件,并添加一个 属性,说附件,然后发送和接收电子邮件对象。检查您是否可以打印您传递的电子邮件对象。
TypeScript
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);
}
所以,我使用 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 发送到服务器,不一定要坚持二进制方法!
我会说,创建一个 JS 和一个 TS 对象,说电子邮件,并添加一个 属性,说附件,然后发送和接收电子邮件对象。检查您是否可以打印您传递的电子邮件对象。
TypeScript
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);
}