Я реализовал сервер для получения файла, используя lib multer, он работает для фотографий (PNG, JPEG), но не для PDF ... фактически я могу получить, но файл поврежден. Если кто-то может мне помочь, я ценю:)
Конфигурация Multer:
import crypto from 'crypto';
import multer from 'multer';
import { extname, resolve } from 'path';
export default {
storage: multer.diskStorage({
destination: resolve(__dirname, '..', '..', 'tmp', 'uploads'),
filename: (req, file, cb) => {
crypto.randomBytes(16, (err, raw) => {
if (err) return cb(err);
return cb(null, raw.toString('hex') + extname(file.originalname));
});
},
}),
};
Middleware:
middlewares() {
this.server.use(cors());
this.server.use(express.json());
this.server.use(
'/files',
express.static(resolve(__dirname, '..', '..', 'tmp', 'uploads'))
);
}
Маршруты:
const routes = new Router();
const upload = multer(multerConfig);
routes.post('/files', upload.single('file'), FileController.store);
FileController:
import File from '../models/File';
class FileController {
async index(req, res) {
const file = await File.findByPk(req.params.id);
res.json(file);
}
async store(req, res) {
const { originalname: name, filename: path } = req.file;
const file = await File.create({
name,
path,
});
return res.json(file);
}
}
export default new FileController();