Я пытаюсь передать изображения из AJAX в серверную часть и загрузить их, сохранить их имена в базе данных.
Мой код AJAX:
var form_data = new FormData($('.updateForm')[0]);
$.ajax({
method: "POST",
url: "/updateMyPost",
data: form_data,
cache : false,
contentType: false,
processData: false,
success: function (result) {
console.info(result);
}
});
Функция Laravel для загрузки файлов:
public function updateMyPost(Request $request){
$name = $request->input('text');
$images = $request->file('images');
foreach($images as $image){
$image_name = time() . $image->getClientOriginalName();
$path = public_path('images');
$img->move($path,$image_name);
}
}
И это то, что мне дает $request->file("images"), когда я его распечатываю.
Array
(
[0] => Illuminate\Http\UploadedFile Object
(
[test:Symfony\Component\HttpFoundation\File\UploadedFile:private] =>
[originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => images.jpg
[mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
[error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
[hashName:protected] =>
[pathName:SplFileInfo:private] => C:\xampp\tmp\phpAB87.tmp
[fileName:SplFileInfo:private] => phpAB87.tmp
)
[1] => Illuminate\Http\UploadedFile Object
(
[test:Symfony\Component\HttpFoundation\File\UploadedFile:private] =>
[originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => iphonex-TA.jpg
[mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
[error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
[hashName:protected] =>
[pathName:SplFileInfo:private] => C:\xampp\tmp\phpAB88.tmp
[fileName:SplFileInfo:private] => phpAB88.tmp
)
)
Как я могу получить имя каждого изображения, а также загрузить их?
Да, в этом случае два изображения
Проверьте мой ответ

Как вы сказали, вы загружаете несколько изображений, поэтому ваш метод store() должен выглядеть следующим образом:
public function updateMyPost(Request $r)
{
$images = $r->images;
foreach($images as $image)
{
$path = $image->store('public/images');
$image_name = $image->getClientOriginalName();
// to store data in your table
Model::create([
'path' => $path,
'name' => $image_name
])
}
}
Должно ли имя функции быть «магазин»? Моя функция имеет другое имя, и ваш код не выполняет эту работу.
не имеет значения, имя функции может быть любым. это просто пример
в вашем коде измените это $img->move($path,$image_name); на $image->move($path,$image_name);
Я удалил строку $image = $image->toArray();, а также изменил $img->move($path,$image_name); на $image->move($path,$image_name);, и теперь это работает. Большое спасибо!
вы загружаете несколько изображений?