Обновление изображения не читается 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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