Reactjs 使用multer在mern堆栈中上载图像不工作

Reactjs 使用multer在mern堆栈中上载图像不工作,reactjs,express,multer,mern,Reactjs,Express,Multer,Mern,我正在尝试使用multer和react在MongoDB中上传图像,但我无法发布它。我有三种形式的输入,即标题、内容和图像。如果我尝试只发布标题和内容,它将成功发布。我还添加了“代理”:http://localhost:8000,位于frontend package.json文件中 这是我的表格 函数后创建(){ const[title,setTile]=使用状态(“”); const[content,setContent]=useState(“”); const[image,setImage]=

我正在尝试使用multer和react在MongoDB中上传图像,但我无法发布它。我有三种形式的输入,即标题、内容和图像。如果我尝试只发布标题和内容,它将成功发布。我还添加了“代理”:http://localhost:8000,位于frontend package.json文件中

这是我的表格
函数后创建(){
const[title,setTile]=使用状态(“”);
const[content,setContent]=useState(“”);
const[image,setImage]=useState({});
const dispatch=usedpatch();
const post=useSelector((state)=>state.postReducer);
const fileOnChange=(e)=>{
setImage(e.target.files[0]);
};
const submitPost=(e)=>{
e、 预防默认值();
const formData=new formData();
formData.append(“图像”,图像);
发送(createPost(标题、内容、图像));
};
返回(
创建新帖子
标题
setTile(e.target.value)}
占位符=“输入文章的标题”
/>
内容
setContent(e.target.value)}
/>
邮递
{/*Post*/}

您正在创建一个表单,这是一个很好的开始,但没有使用axios发送表单

要将文件从前端发送到后端,您需要使用构造表单并将文件附加到表单中。您还可以将其他数据附加到表单中

以下是我将如何更改您的代码以使其工作。在您的表单文件中:

const formData=new formData();
formData.append('image',image);
formData.append('title',title);
formData.append('content',content);
调度(createPost(formData));
然后将您的操作更改为:

export const createPost=(formData)=>async(dispatch)=>{
试一试{
分派({type:POST_POST_LOADING});
const config={headers:{“内容类型”:“多部分/表单数据”};
const{data}=wait axios.post(
“/api/newpost”,
formData,
配置
);
派遣({
类型:POST_POST_SUCCESS,
有效载荷:数据,
});
}捕获(错误){
派遣({
类型:POST\u POST\u FAIL,
有效载荷:错误,
});
}
};

非常感谢Maxim Orlov,它解决了我的问题issue@sudhansubhattarai是的!