Как отправить файл pdf с внешнего интерфейса на сервер Nodejs? - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть файл pdf, сгенерированный в приложении, который я получил с помощью плагина html2pdf. На моей резервной копии есть сервер нодейлеров, где я могу прикреплять файлы и отправлять их на электронную почту по своему выбору. Есть ли способ, которым я могу отправить PDF, сгенерированный во внешнем интерфейсе, в Nodejs? Я также использую экспресс

Edit: На основании вашего совета я сделал

 **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: Невозможно прочитать свойство 'uploadedFile' с нулевым значением

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Да.

  1. Создание и конечная точка / маршрут в вашем экспресс-приложении
  2. Используйте в своем клиенте агента http, такого как superagent, request или axios
  3. Используйте составную форму или что-то вроде FormData для создания данных, которые должны быть отправлены.
  4. Отправьте его на URL, который вы создали в экспрессе.
  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) })

В вашем экспресс-приложении вы делаете что-то вроде

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');
})
0 голосов
/ 03 сентября 2018
<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>

Для получения его на узле необходимо определить новый маршрут по тому же пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...