Мой бэкэнд laravel не может загрузить или переместить файл в моем каталоге ЗАГРУЗИТЬ ПАПКУ. Я думаю, что мой запрос файла представляет собой строку, поэтому загрузка перемещения не работает. Я не знаю, в этом ли проблема.
Я использую React JS
и useLoader Data
и Form
из react-router-dom
в качестве интерфейса.
И настроить axiosClient
Вот ошибка на console.info
Сеть
Console.log
Вот мой экспорт по умолчанию ProductAdd
export default function ProductAdd(){
const [image,setImage] = useState(null)
const imageHandler = (e) =>{
setImage(e.target.files[0])
}
return(<Form id = "clear-form" method = "post" replace>
<div className = "mb-4 relative">
<label >
File Picture
</label>
<input name = "image" onChange = {imageHandler} type = "file" />
</div>
<div>
<button type = "submit
Create
</button>
</Form>)
}
Вот мой экспорт ProductAddActionLoader
export const ProductAddActionLoader = async({ request }) =>{
const formData = await request.formData();
const payload = {
image:formData.get('image'),
}
return await axiosClient.post('admin/fruit/create',payload).
then(({data})=>{
console.info(data)
return data
}).catch(error=>{
console.info(error)
return error
})
}
Вот мой router.jsx
path:'create',
element:<ProductAdd/>,
action:ProductAddActionLoader
Вот мой ProductController
в моем бэкенде
public function create(Request $request){
//return $request->image;
$fileName = time().'.'.$request->image;
$request->image->move(public_path('uploads'), $fileName);
return response('Data has been Added',200);
}
но когда я раскомментирую return $request->image
, имя изображения возвращается.
но это $request->image->move(public_path('uploads'), $fileName);
не работает и не загружается в мой путь к каталогу
ты можешь это сделать:
Storage::disk('local')->put('uploads' . '/' . $fileName , $request->image);
он возвращает пустую строку, я использую encType='multipart/form-data'
Я думаю, что вы неправильно передаете файл из js, попробуйте передать файл с помощью этого
return await axiosClient.post('admin/fruit/create', formData)
вместо
return await axiosClient.post('admin/fruit/create', payload)
Как сейчас написано, ваш ответ неясен. Пожалуйста, отредактируйте , чтобы добавить дополнительные сведения, которые помогут другим понять, как это отвечает на заданный вопрос. Вы можете найти больше информации о том, как писать хорошие ответы в справочном центре.
Вам нужно использовать multipart/form-data для загрузки файлов
return await axiosClient.post('admin/fruit/create', payload, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).
then(({data})=>{
console.info(data)
return data
}).catch(error=>{
console.info(error)
return error
})
спасибо я это уже сделал