Axios在PUT方法中不发送formData

j91ykkif  于 2022-10-21  发布在  iOS
关注(0)|答案(3)|浏览(217)

我正在尝试更新一个用户的个人资料(社交网络应用),我正在使用Reaction作为前端,LALAVEL作为后端。数据包括一个图像,所以我使用FormData发送它,我在后端做了一个小的验证,以检查数据是否发送到后端,但我发现axios没有发送formData。以下是我在提交之后运行的函数:

const editProfile = (e) => {
        e.preventDefault()
        setLoading(true)
        const formData = new FormData();
        formData.append('avatar', pic.avatar)
        formData.append('website', profile.website)
        formData.append('addresse', profile.addresse)
        formData.append('bio', profile.bio)
        formData.append('phone', profile.phone)
        formData.append('gender', profile.gender)
        formData.append('full_name', auth.full_name)
        formData.append('user_name', auth.user_name)
        formData.append('email', auth.email)
        console.log(formData)
            axios.put(`api/profile/update/${id}`, formData).then((res) => {
                if(res.data.success) {
                    console.log('success')
                    history.push(`/profile/${id}`)
                }else {
                    console.log(res.data.message)
                    setLoading(false)
                }
            })      
    }

我只要求在幼体上做性别:

public function update(Request $request, $id)
    {
        $profile = Profile::find($id);
        if(is_null($profile)) {
            return response()->json([
                'success' => false,
                'message' => 'Profile can not be found!'
            ]);
        }else {
            $validate = Validator::make($request->all(),[
                'gender' => 'required'
            ]);
            if($validate->fails()) {
                return response()->json([
                    'success' => false,
                    'message' => $validate->messages()
                ]);
            }else {...

正如它在Reaction逻辑中提到的,如果响应失败,我正在做sole.log来检查错误,并且我得到性别字段是必需的,我试图在将数据发送到axios之前做一个console.log(profile.Gender),我可以看到值Normal,所以有人能帮我吗?

2guxujil

2guxujil1#

我想你应该把你的标题改一下。

.put(url, formData, {
        headers: { "Content-type": "multipart/form-data" },
      })
swvgeqrz

swvgeqrz2#

我解决了这个问题,解决方案:我必须将方法从PUT改为POST(无论是在幼体路线上还是在React axios 上)。

bf1o4zei

bf1o4zei3#

它起作用了

let formData = new FormData();
formData.append("_method", "PUT");
formData.append("a", 1);
// add your variables

axios.post(url, formData,  {
        headers: { "Content-type": "multipart/form-data" },
      })´

相关问题