При загрузке pdf с помощью ax ios (клиент) и multer (сервер) файл попадает на сервер. Однако, когда я использую writeFileSync()
, он просто создает PDF-файл с [object, Object]
внутри него. Вот как выглядит объект в req.file:
{
fieldname: 'file',
originalname: '307.pdf',
encoding: '7bit',
mimetype: 'application/pdf',
buffer: <Buffer 25 50 44 46 2d 31 2e 34 0d 25 e2 e3 cf d3 0d 0a 31 33 32 36 20 30 20 6f 62 6a 0d 3c 3c 2f 4c 69 6e 65 61 72 69 7a 65 64 20 31 2f 4c 20 35 36 31 37 30 ... 561656 more bytes>,
size: 561706
}
Я попытался записать req.file.buffer в файл pdf, который записывает больше гиббери sh в pdf, но это неправильно закодировано. Есть ли какие-то настройки кодировки, которые мне где-то не хватает?
Код клиента:
handle307Upload(e) {
const dataForm = new FormData();
dataForm.append('file', e.target.files[0]);
axios.post('http://localhost:4001/importalpha', dataForm)
.then(res => console.log(res))
.catch(err => console.log(err));
}
Код маршрута:
module.exports = function(req, res, next) {
const file = req.file;
fs.writeFileSync(join(__dirname, '307.pdf'), file);
}
Код сервера: (удалено некоторые для краткости)
const express = require('express');
const bodyParser = require('body-parser');
const multer = require('multer');
const importAlphaRoute = require('../routes/import-alpha');
const upload = multer({});
const app = express();
app.use(bodyParser.urlencoded({ extended: true, limit: '5mb' }));
app.use(bodyParser.json({limit: '5mb'}));
app.post('/importalpha', upload.single('file'), importAlphaRoute);
Любая помощь очень ценится. Все пробовал безрезультатно.