我们可以从AngularJS客户端发送PDF文件到NodeJS服务器

使用jspdf我在客户端(AngularJS)生成了pdf文件。 我能够成功下载文件。 现在我有另一个function, pdf via email发送pdf via email到用户的电子邮件地址。

问题:

当用户点击send emailbutton时,我使用jspdf创build的pdf应该上传到服务器,在那里我应该能够将我从客户端获得的pdf文件附加到电子邮件。 是否有可能这样做? 我不确定我们是否可以做到这一点。

我们可以发送文档对象var doc = new jsPDF('p', 'pt');nodejs然后渲染它,并最终附加到电子邮件?

如果上述任务不可能,那么让我知道其他的可能性。

PS:我正在使用nodemailer发送电子邮件。

我已经为客户端和服务器端代码分配了一个示例代码,并进行了testing和完美工作。 请根据您的需要进行修改。

服务器端:托pipe在云9上进行testing – 因此,它需要提供商通过process对象提供的公共IP和端口。 根据您的主机环境更改侦听器。

注意:请阅读在线评论以获得更好的理解

 var express = require('express'); var app = express(); var fs = require('fs'); var bodyParser = require('body-parser'); var formidable = require('formidable'), form = new formidable.IncomingForm(); app.post("/", function(req, res, next) { form.parse(req, function(err, fields, files) { console.log("File received:\nName:"+files.pdf.name+"\ntype:"+files.pdf.type); }); form.on('end', function() { /* this.openedFiles[0].path -- object Contains the path to the file uploaded ------- Use NodeMailer to process this file or attach to the mail-----------------*/ console.log("PDF raw data:"+ fs.readFileSync(this.openedFiles[0].path, "utf8")); res.status(200).send("thank you"); }); }) .listen(process.env.PORT, process.env.IP, function() { console.log('Server app listening'); }); 

客户端: 提琴手

注:我没有粘贴imgData因为SO有字符限制。 请参阅提琴手链接的客户端代码。 将请求URL更改为您的服务器。 客户端使用HTML5标准的Blob API。 所以在符合HTML5的浏览器上进行testing。

 var imgData = [[**Copy the same image provided by JSpdf example. Check the fiddler for complete code**]] var doc = new jsPDF(); doc.setFontSize(40); doc.text(35, 25, "Octonyan loves jsPDF"); doc.addImage(imgData, 'JPEG', 15, 40, 180, 180); var data = new Blob([doc.output()], { type: 'application/pdf' }); var formData = new FormData(); formData.append("pdf", data, "myfile.pdf"); var request = new XMLHttpRequest(); request.open("POST", "https://saltjs-nirus.c9.io"); // Change to your server request.send(formData); 

参考文献: