【问题标题】:How to send data and photo at same time to node js backend using axios in react js如何在反应js中使用axios将数据和照片同时发送到节点js后端
【发布时间】:2021-05-13 11:55:16
【问题描述】:

我正在尝试使用 axios 将一些表单数据和图像发送到后端,但我的代码无法正常工作。当我单独发送图像时它可以工作,而当我单独发送数据时它可以工作。但是如何同时发送:

我正在使用 reactjs 和 useState:

const [roomData, setRoomData] = useState(data)

我所有的数据都在 roomData 中。

const [files, setfiles] = useState()

我已经在输入标签和 setfiles(e.target.files) 上使用 onchange 将我的图像设置在 files 变量中

我已使用以下代码在 formdata 变量中附加了文件中的所有图像

const submitHandler=async(e)=>{
        e.preventDefault()
        const formData= new FormData();
        Array.from(files).forEach(file=>{
            formData.append('photos', file)
        })

        const res= await axios.post(
            'http://localhost:8000/api/sell_products',
            { formData, roomData }
        )

    }

使用这个我只能在后端获得 roomData 作为 req.body。但是当我控制台 req.files 它给出未定义的。帮助

【问题讨论】:

  • 如果roomData 甚至没有在您的submitHandler 代码中提及,您如何获得它?
  • 我从 useState 中创建了 roomData 变量
  • 哦,我现在明白了。我只需要向右滚动。我建议进行编辑以拆分该行

标签: node.js reactjs axios


【解决方案1】:

您需要在表单数据中附加文本数据。不要单独发送

const submitHandler=async(e)=>{
    e.preventDefault()
    const formData= new FormData();
    form.append('data', roomData);
    Array.from(files).forEach(file=>{
        formData.append('photos', file)
    })

    const res= await axios.post('http://localhost:8000/api/sell_products', { formData})

}

【讨论】:

  • 我如何在 node js 后端单独获取它们。你能再帮忙吗
  • 分开是什么意思?您可以执行 req.body.data 以获取文本中的数据,并执行 req.files 以获取文件数组。使用multer进行文件操作会更容易
  • req.body.data 返回 [object object],我现在无法访问我的房间数据。但 req.files 工作正常
  • 我不知道 roomData 是否是一个对象,但你可以做的是描述对象 try console.log({...req.body.data});
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
  • 2021-08-22
相关资源
最近更新 更多