Я использую функцию Vercel Serverless для обработки загрузки файла в Digital Ocean Spaces (API идентичен AWS S3). Однако у меня возникают проблемы с обработкой multipart / form-data в обработчике запросов.
Во внешнем интерфейсе я использую fetch для публикации объекта FormData () с файлами и парой текстовых полей. При регистрации тела и серверов в заголовке я вижу там все, как ожидалось, однако при обработке multipart с Multer (я также пробовал пару других подобных пакетов) я не могу получить ни одно из опубликованных полей или файлов .
Также стоит отметить, что при использовании Postman для проверки запросов POST я сталкиваюсь с той же проблемой, поэтому я уверен, что проблема заключается в бессерверной функции.
Front -end:
const handleSubmit = async (values) => {
const formData = new FormData();
// build my Form Data from state.
Object.keys(values).forEach(key => {
formData.append(key, values[key]);
});
const response = await fetch("/api/post-submission", {
method: "POST",
headers: {
Accept: "application/json",
},
body: formData,
});
const json = await response.json();
};
Бессерверный обработчик:
const util = require("util");
const multer = require("multer");
module.exports = async (req, res) => {
await util.promisify(multer().any())(req, res);
console.log("req.body", req.body); // >> req.body [Object: null prototype] {}
console.log("req.files", req.files); // >> req.files []
// Do the file upload to S3...
res.status(200).json({ uploadData });
};
Ожидаемое поведение:
req.body и req.files должны быть заполнены моими отправленными данными.