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
相关产品推荐
相关产品推荐

