我正在使用JSPDF在我的网络应用上动态生成包含用户信息的PDF,该应用程序内置于React.js并托管在Firebase上。
在最后一页上,我想通过电子邮件将此PDF发送到用户指定的地址列表。这听起来很简单,但我遇到了一些问题。首先,我不能仅使用React.js发送电子邮件。做一些研究使我创建了一个上传文件的PHP文件的请求。在PHP文件中,然后我使用标准的PHP邮件程序发送电子邮件。
JSPDF具有用于导出文件的这些函数:
var pdfInBase64 = doc.output('datauristring');
var pdfInRawFormat = doc.output();
以下是我尝试解决此问题的两个方法。两者都使用FormData
。
var formData = new FormData();
formData.append("data", pdfInBase64); // also tried pdfInRawFormat
使用XMLHttpRequest:
var xhr = new XMLHttpRequest();
xhr.open('POST', 'uploader.php', true);
xhr.onload = function () {
if (xhr.status === 200) {
// File(s) uploaded.
console.log('completed');
} else {
alert('An error occurred!');
}
};
xhr.send(formData);
使用AJAX:
var $ = require ('jquery');
$.ajax({
type: "POST",
url: 'uploader.php',
data: formData,
dataType: 'json',
contentType: false,
processData: false
});
上述两种方法似乎都不适用于我。当我进入我的控制台并查看“网络”选项卡时,我看到已经发出了请求,但是在20秒后超时。我尝试不上传文件,只将data
设置为hello
或任何其他字符串,并且PHP文件成功接收它。我认为我的文件太大,导致超时。
有人可以指出我正确的方向来解决这个问题吗?我的最终目标是使用JavaScript和PHP发送带有附件的电子邮件。谢谢!