Обновление изображения не читается php, предоставлены нулевые данные, реакция инерции laravelPhp

Кемеровские программисты php общаются здесь
Гость
Обновление изображения не читается php, предоставлены нулевые данные, реакция инерции laravel

Сообщение Гость »


У меня есть система CRUD специально для обновлений, я пытался обновить данные, и все данные обновляются правильно, кроме изображений.
это мой код контроллера:

Код: Выделить всё

public function update_book(Request $request, $id)
{
// dd($request->all());

$book = Book::find($id);

$imageName = $request->file('image')->store('public/book');

$book->update([
'name' => $request->name,
'date' => $request->date,
'author' => $request->author,
'stock' => $request->stock,
'description' => $request->description,
'image' => $imageName
]);

$book->categories()->sync($request->categories);

return redirect()->route('admin.books_panel')->with('success', 'Data Successfully Updated!');
}
это мой код реакции:

Код: Выделить всё

    const [image, setImage] = useState(null)
const handleImageChange = (e: React.ChangeEvent) => {
if (e.target.files && e.target.files[0]) {
setImage(e.target.files[0])
}
}

const updateBook = async (e: FormEvent) => {
e.preventDefault()

let cat: string[] = []
selectedCategories.forEach(categoryId => {
cat.push(categoryId)
})

Inertia.put(`/admin/books-panel/${book.id}`, {
name: name,
date: date,
author: author,
stock: stock,
description: description,
image: image as Blob,
categories: cat.slice(1)
})
}
Результат dd:

Код: Выделить всё

array:7 [▼ // app\Http\Controllers\AdminController.php:114
"name" => "ddd"
"date" => "2024-03-05"
"author" => "ccc"
"stock" => 1111
"description" => "ccc"
"image" => null
"categories" => array:2 [▶]
]
Я также пробовал использовать метод добавления, данные из изображения существуют там, но если я использую этот метод, контроллер получит данные [] (данные были получены некорректно, включая изображение), вот моя функция реагирования:

Код: Выделить всё

 const updateBook = async (e: FormEvent) => {
e.preventDefault()

const formData = new FormData()
formData.append('name', name)
formData.append('date', date)
formData.append('author', author)
formData.append('stock', stock)
formData.append('description', description)

if (image !== null) {
const imageFile = new File([image], 'image.jpg')
formData.append('image', imageFile)
}

selectedCategories.forEach(categoryId => {
formData.append('categories[]', categoryId)
})

const payload = Object.fromEntries(formData.entries())

console.log(payload)

Inertia.put(`/admin/books-panel/${book.id}`, payload)
}
dd result: [] // app\Http\Controllers\AdminController.php:125
console.log result:
Изображение



Источник: https://stackoverflow.com/questions/781 ... rtia-react

Вернуться в «Php»