我正在使用useform获取要上传的文件和其他信息。我将收到的信息记录到屏幕上,它不会出现null或未定义。它似乎工作正常。但我无法发送到api端。我得到500错误或400错误。
前端:
//index.js
function uploadFile(form) {
const { email, description, files } = form;
const formData = new FormData();
Array.from(files).forEach((file) => {
formData.append(file.name, file);
});
formData.append("email", email);
formData.append("token", token)
for (var key of formData.entries()) {
console.log(key[0] + ", " + key[1]);
}
dispatch(uploadChallengeThunk(formData));
}
//service.js
export async function uploadChallengeService(formData) {
Array.from(formData).forEach((item) => {
console.log("🚀 ~ file: index.js:5 ~ Array.from ~ item", item);
});
return await api.post("/challenges/upload", formData);
}
后端:
export const config = {
api: {
bodyParser: false,
},
};
const formidableConfig = {
multiples: true,
allowEmptyFiles: false,
maxFileSize: 5 * 1024 * 1024,
keepExtensions: true,
filename: (name, ext, part, form) => {
return part.originalFilename;
},
};
function parseRequest(req) {
console.log("not coming here");
return new Promise((resolve, reject) => {
const form = new formidable.IncomingForm(formidableConfig);
form.parse(req, (error, fields, files) => {
if (error) {
alert("not working");
console.log("not coming here");
reject(new BusinessError(error.message, error.httpCode));
}
resolve({ files, fields });
});
});
}
async function postChallengesUpload(req, res) {
console.log("not coming here");
const { files, fields } = await parseRequest(req);
}
export default apiHandler({
POST: postChallengesUpload,
});
1条答案
按热度按时间klsxnrf11#
你的
apiHandler
没有像你期望的那样工作,这是你的核心问题。你得到500和400的事实是一个好兆头,表明你实际上是在向后端发送请求。当你得到500分时,你通常会导致一个错误,你没有正确地捕捉到它,它冒泡了太多。通常称为内部服务器错误。
当你发送错误的东西,太小,太大,等等,你通常会得到400。
好的一面是你不会得到404.
你需要检查你的
apiHandler
并确保你设置的正确。你的服务器正在返回状态码,也就是响应,但是你的apiHandler
并没有按照你想要的方式运行。