Axios 使用 formData 发布请求

时间:2021-06-17 01:52:14

标签: reactjs axios formik strapi

我想制作一个具有多个输入(两个文本和一个图像)的表单。 此外,我正在使用 react、axios、formik 并将我的数据提交给 Strapi。

只有一个文本和一个文件,它工作正常,但是当我尝试添加新的追加时,出现错误

When using multipart/form-data you need to provide your data in a JSON 'data' field.
const onSubmit = async (event) => {
    const data = new FormData()

    //This works
    data.append('data', JSON.stringify({title:event.title}))      
    data.append('files.cover', file)

    //This doesnt
    data.append('title', JSON.stringify({title:event.title}))
    data.append('description', JSON.stringify({description:event.description}))
    data.append('files.cover', file)

       
       
    try{
        const response = await axios.post('http://localhost:1337/foodtrucks', data,  
            {                
                headers: userToken && { Authorization: `Bearer ${userToken}` }
            },
        )

        // const data = await response.json()

        console.log("response", response)

    } catch(err){           
        // setError(err.response.data.message[0].messages[0].message)
        setError("error")
        console.log(err)
    }
}

我尝试添加标题、使用表单数据等,但没有任何效果。

1 个答案:

答案 0 :(得分:1)

我认为 axios 用于调用 API - 它可能并不容易(或可能发送表单数据)。

如果您在浏览器中运行,您可能希望使用纯 XMLHttpRequest。我遇到了 this article,它定义了 declare @table table(Name varchar(20), Type char(2)) insert into @table values ('Roger','A1'), ('Roger','A2'), ('Grace','A1'), ('Grace','A2'), ('Grace','A3'); ;with NameCount AS ( select Name, count(case when type in ('A1','A2') then 1 END) AS SpecificCount, count(*) as totalcount from @table group by name ) SELECT t.* FROM @table as t inner join NameCount as n on n.Name = t.Name where n.SpecificCount = n.totalcount 函数。它在很多项目上帮了我很多。