You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React+Laravel带图片注册触发Axios 500错误求助

问题:Laravel API + React 图片上传注册出现Axios 500错误

我使用Laravel编写API,在React中实现支持图片上传及其他参数的用户注册功能。点击注册按钮时出现Axios 500错误,虽后端已接收数据,但推测问题大概率出在图片上传环节。Postman测试正常,无图片的注册流程可正常运行。

React 代码

Register.js

const navigate = useNavigate();
const {http, setToken} = AuthUser();

const registration = (e) => {
  e.preventDefault();
  console.log(photo);

  http.post('/register', {name:name, email:email,phone:phone, photo:photo, password:password, password_confirmation:passwordConfirmation})
    .then((response) => {
      console.log(response.data.message, response.data.user, response.data.token);  
      navigate('/login');
    })
}

AuthUser.js

import axios from "axios";
import { useState } from 'react';
import { useNavigate } from "react-router-dom";

export default function AuthUser() {
  const navigate = useNavigate();

  const getToken = () => {
    const tokenString  = sessionStorage.getItem('token');
    const userToken = JSON.parse(tokenString);
    return userToken;
  }

  const getUser = () => {
    const userString  = sessionStorage.getItem('user');
    const user_detail = JSON.parse(userString);
    return user_detail;
  }

  const [token, setToken] = useState(getToken());
  const [user, setUser] = useState(getUser());

  const saveToken = (user,token)  => {
    sessionStorage.setItem('token', JSON.stringify(token));
    sessionStorage.setItem('user', JSON.stringify(user));

    setToken(token);
    setUser(user);
    navigate('/');
  }

  const logout = () => {
    sessionStorage.clear();
    navigate('/login');
  }

  const http = axios.create({
    baseURL: "http://127.0.0.1:8000/api",
    headers: {
      "Content-Type": "application/json",
      // "Content-Type": "application/vnd.api+json",
      "Authorization": `Bearer ${token}`,
    }
  });
  return {
    setToken:saveToken,
    token,
    user,
    getToken,
    http,
    logout
  }
}

Laravel 代码

AuthController.php

public function register(RegisterRequest $request) {
    $request->validated($request->all());

    $image = $request->photo;
    $imageName = Str::random(32).'.'.$request->photo->getClientOriginalExtension();

    $user = User::create([
        'name' => $request->name,
        'email' => $request->email,
        'phone'=>$request->phone,
        'photo' => $imageName,
        'location' => '',
        'bio' => '',
        'password' => Hash::make($request->password),
    ]);

    $path = public_path('upload/users');

    $image -> move($path, $imageName);
    return response([
        'message' => 'User has been created',
        'user' => new UserResource($user),
        'token' => $user->createToken($user->name)->plainTextToken
    ]);
}

已尝试的解决方法

  • 修改请求头Content-Type为application/vnd.api+json,未解决问题。

内容的提问来源于stack exchange,提问作者Adfegecy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:50:26