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

Javascript 如何将pdf文件从前端发送到Nodejs服务器?,javascript,node.js,express,https,Javascript,Node.js,Express,Https,我在我的应用程序前端有一个pdf生成的文件,它是我使用html2pdf插件得到的。我有一个NodeEmailer服务器在我的后台,在那里我可以附加文件并将其发送到我选择的电子邮件。有没有办法将前端生成的pdf发送给Nodejs?我也在用快递 编辑: 根据你的建议,我做到了 **On the Client side** var element = document.getElementById('element-to-print'); const elem = document.getEleme

我在我的应用程序前端有一个pdf生成的文件,它是我使用html2pdf插件得到的。我有一个NodeEmailer服务器在我的后台,在那里我可以附加文件并将其发送到我选择的电子邮件。有没有办法将前端生成的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]);
            })
在express应用程序上

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”


选择要上载的文件
提交

要在节点接收,必须在同一路径上定义新路由。


选择要上载的文件
提交

要在节点接收,必须在同一路径上定义新路由。

  • 在express应用程序中创建和删除端点/路由
  • 在客户端中使用http代理,如superagent、request或axios
  • 使用多部分表单或类似FormData的内容来创建应该发送的数据
  • 将其发布到您在express中创建的url
  • 使用诸如express fileupload或busboy之类的中间件来处理附件
  • 所以在你的客户身上。你有点像

    var formData = new FormData();
    formData.append("filename", "My awesome file");
    formData.append("uploadedFile", fileInputElement.files[0]);
    
    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');
    })
    
    然后用Axios之类的东西发布

    axios.post('/upload',formData).then(res => { console.log(res) })
    
    在express应用程序中,您可以执行以下操作

    var formData = new FormData();
    formData.append("filename", "My awesome file");
    formData.append("uploadedFile", fileInputElement.files[0]);
    
    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');
    })
    

  • 在express应用程序中创建和删除端点/路由
  • 在客户端中使用http代理,如superagent、request或axios
  • 使用多部分表单或类似FormData的内容来创建应该发送的数据
  • 将其发布到您在express中创建的url
  • 使用诸如express fileupload或busboy之类的中间件来处理附件
  • 所以在你的客户身上。你有点像

    var formData = new FormData();
    formData.append("filename", "My awesome file");
    formData.append("uploadedFile", fileInputElement.files[0]);
    
    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');
    })
    
    然后用Axios之类的东西发布

    axios.post('/upload',formData).then(res => { console.log(res) })
    
    在express应用程序中,您可以执行以下操作

    var formData = new FormData();
    formData.append("filename", "My awesome file");
    formData.append("uploadedFile", fileInputElement.files[0]);
    
    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');
    })
    

    从我的index.js中,我得到一个名为
    TypeError的错误:无法读取null的属性“uploadedFile”
    我有与您相同的express应用程序代码,但我修改了客户端javascript,如下所示我用您的solution@greenn几个指针1)您正在调用req.files.uploadedFile,但您在客户端对此进行了注释代码。更改formData.append(“文件名”,pdf)中的客户端代码;到formData.append(“uploadedFile”,pdf)2)由于您已经链接了承诺,请在axios前面添加一个返回。因此它将成为return axios.post 3)您确定已安装express fileupload吗?请运行npm install express fileupload--保存在控制台中。从my index.js我得到一个名为
    TypeError的错误:无法读取null的属性“uploadedFile”
    我有与您相同的express应用程序代码,但我修改了客户端javascript,就像这样我用您的solution@greenn几点提示1)您正在呼叫req.files.uploadedFile,但您在客户端代码中对此进行了注释。更改formData.append(“文件名”,pdf)中的客户端代码;到formData.append(“uploadedFile”,pdf)2)由于您已经链接了承诺,请在axios前面添加一个返回。因此它将成为return axios.post 3)您确定已安装express fileupload吗?请运行npm install express fileupload--保存在控制台中。