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

Мне нужно отправить 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.info(newpdf)
            var formData = new FormData();
            formData.append("uploadedFile", newpdf);
            axios.post('/upload',formData).then(res => { console.info(res) }).catch(error => {
            console.info(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 (Internal Server Error)

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

проверьте на стороне сервера, можете ли вы получить файл в кодировке base64

brk 03.09.2018 13:01

На стороне сервера я получаю Невозможно прочесть свойство uploadedFile со значением null

greenn 03.09.2018 13:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
2
1 038
1

Ответы 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
})

Другие вопросы по теме