繁体   English   中英

如何将pdf文件从前端发送到Nodejs服务器?

[英]How to send pdf file from front-end to Nodejs server?

我使用html2pdf插件在应用程序的前端有一个pdf生成的文件。 我的支持者有一个nodemailer服务器,可以在其中附加文件并将其发送到我选择的电子邮件中。 有没有办法将前端生成的pdf发送给Nodejs? 我也在用快递

编辑:根据您的建议,我做了

 **On the Client side**
var element = document.getElementById('element-to-print');
const elem = document.getElementById('html');
html2pdf().from(element).toPdf().get('pdf').then(function (pdf) {
            window.open(pdf.output('bloburl'), '_blank');
            var formData = new FormData();
            formData.append("filename", pdf);
            axios.post('/upload',formData).then(res => { console.log(res) })
            // formData.append("uploadedFile", fileInputElement.files[0]);
            })

在快递应用上

app.post('/upload', fileUpload(), function(req, res) {  
    const sampleFile = req.files.uploadedFile;
    // do something with file
    res.send('File uploaded');
  })

但是我收到来自index.js的错误

TypeError:无法读取null的属性“ uploadedFile”

<form method="post" enctype="multipart/form-data" action="/">
<div>
  <label for="profile_pic">Choose file to upload</label>
  <input type="file" id="profile_pic" name="profile_pic"
      accept=".pdf">
</div>
<div>
  <button>Submit</button>
</div>

为了在节点上接收它,您必须在同一路径上定义一条新路由。

是。

  1. 在您的Express应用中创建和终结点/路由
  2. 在客户端中使用http代理(例如superagent,request或axios)
  3. 使用多部分表单或类似FormData的东西来创建应该发送的数据。
  4. 将其发布到您在express中创建的网址。
  5. 使用Middlewere(例如express-fileupload或busboy)来处理附件。

因此,在您的客户中。 你有类似的东西

var formData = new FormData();
formData.append("filename", "My awesome file");
formData.append("uploadedFile", fileInputElement.files[0]);

然后用类似Axios的东西发布

axios.post('/upload',formData).then(res => { console.log(res) })

在您的Express应用中,您可以执行以下操作

const express = require('express');
const fileUpload = require('express-fileupload');
const app = express();

app.post('/upload', fileUpload(), function(req, res) {  
  const sampleFile = req.files.uploadedFile;
  // do something with file
  res.send('File uploaded');
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM