Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File upload 使用react钩子表单上传的图像字段在前端工作,但在next.js API路由中,req.body.Image是一个空对象_File Upload_Next.js_React Hook Form - Fatal编程技术网

File upload 使用react钩子表单上传的图像字段在前端工作,但在next.js API路由中,req.body.Image是一个空对象

File upload 使用react钩子表单上传的图像字段在前端工作,但在next.js API路由中,req.body.Image是一个空对象,file-upload,next.js,react-hook-form,File Upload,Next.js,React Hook Form,这是前端代码的核心部分: 输入注册: return ( <form onSubmit={handleSubmit(onSubmitForm)}> <input {...register("image")} type="file" /> </form> ); 在浏览器控制台中,数据对象为: { 图像:文件列表 } 产品API路径中的代码为: import { NextApiRequ

这是前端代码的核心部分:

输入注册:

return (
    <form onSubmit={handleSubmit(onSubmitForm)}>
            <input {...register("image")} type="file" />
    </form>
);
在浏览器控制台中,数据对象为: { 图像:文件列表 }

产品API路径中的代码为:

import { NextApiRequest, NextApiResponse } from "next";

export default (req: NextApiRequest, res: NextApiResponse) => {
  console.log(req.body)
};
在控制台中,结果是:
{image:{'0':{}}

我也使用react-hook表单,但在图像上传的情况下,事实是这个输入忽略了它,我不认为它有用,我的方法是这样的:

const fileChangedHandler = async (e) => {
  const imageAvatar = new FormData()
  imageAvatar.append(
    "avatarImage",
    e.target.files[0]
  )
  await Server.updateAvatarUser(auth.user.id, imageAvatar);
}
在前端,您应该使用如下内容:

const fileChangedHandler = async (e) => {
  const imageAvatar = new FormData()
  imageAvatar.append(
    "avatarImage",
    e.target.files[0]
  )
  await Server.updateAvatarUser(auth.user.id, imageAvatar);
}
输入:

<label htmlFor="inputAvatar" >
   Cambiar imagen
</label>
<input type="file" accept=".jpg, .jpeg, .png" id="inputAvatar" onChange={fileChangedHandler} className="hidden"/>
在您的控制器和您的模型中:

const avatarImage = req.files.avatarImage;
const uploadPath = "public/images/avatars/" + avatarImage.name;
avatarImage.mv(uploadPath, function (error) {
  if (error) {
    console.log(error);
    return { error: "Error guardando el archivo" };
  }
});
return { success: "Archivo guardado" };
根据以上库的变化,您也可以使用

我希望我帮了你一些忙,祝你好运

const avatarImage = req.files.avatarImage;
const uploadPath = "public/images/avatars/" + avatarImage.name;
avatarImage.mv(uploadPath, function (error) {
  if (error) {
    console.log(error);
    return { error: "Error guardando el archivo" };
  }
});
return { success: "Archivo guardado" };