Отправка сгенерированного html2pdf pdf обратно на сервер

Мне нужно отправить PDF-файл, сгенерированный на стороне клиента, с помощью html2pdf на сервер. Мне удалось преобразовать сгенерированный PDF в base64 и я хочу отправить его обратно, используя axios. Вот мой клиентский код:

  function myFunction(){
           var element = document.getElementById('element-to-print');
           html2pdf().from(element).outputPdf().then(function(pdf) {
    //Convert to base 64
            const newpdf=btoa(pdf);
            console.log(newpdf)
            var formData = new FormData();
            formData.append("uploadedFile", newpdf);
            axios.post('/upload',formData).then(res => { console.log(res) }).catch(error => {
            console.log(error.response)
        })
    });

Вот мой код на стороне сервера:

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

Я думаю, что проблема на стороне клиента, так как я получаю версию моего конвертированного PDF-файла в формате base64 на своей консоли, но после этого я получаю сообщение об ошибке:

POST http://localhost:3000/upload 500 (внутренняя ошибка сервера)

Как решить эту проблему? Спасибо.


person greenn    schedule 03.09.2018    source источник
comment
проверьте на стороне сервера, можете ли вы получить файл в кодировке base64   -  person brk    schedule 03.09.2018
comment
На стороне сервера я получаю сообщение Невозможно прочитать свойство "uploadedFile" со значением null   -  person greenn    schedule 03.09.2018


Ответы (1)


Для FormData в express вы должны использовать промежуточное программное обеспечение, такое как Multer

и ваш код будет таким:

var express = require('express')
var multer  = require('multer')
var upload = multer({ dest: 'uploads/' })

var app = express()

app.post('/upload', upload.single('uploadedFile'), function (req, res, next) {
  // req.file is the `avatar` file
  // req.body will hold the text fields, if there were any
})
person Abderrahim Soubai-Elidrisi    schedule 03.09.2018