Конечное значение $fileNameToStore
устанавливается на 16-ю итерацию цикла, равную noimage.jpg
.Тем не менее, похоже, что ваши изображения должны быть сохранены, если они присутствуют.
Вы можете решить первую проблему, создав массив имен файлов для хранения:
for($i=1; $i<=16; $i++){
$filenamestr = (string)('image'.$i);
if($request->hasFile($filenamestr)){
// Get filename with the extension
$filenameWithExt = $request->file('image'.$i)->getClientOriginalName();
// Get just filename
$filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
// Get just ext
$extension = $request->file('image'.$i)->getClientOriginalExtension();
// Filename to store
$fileNameToStore[$i]= $filename.'_'.time().'.'.$extension;
// Upload Image
$path = $request->file('image'.$i)->storeAs('public/cover_images', $fileNameToStore[$i]);
} else {
$fileNameToStore[$i] = 'noimage.jpg';
}
}
dd($fileNameToStore);
Для второй проблемы, не забудьте проверить, что в вашей форме установлено <form enctype="multipart/form-data"...
.Также проверьте, что у сервера есть доступ на запись в вашу папку cover_images
.
Также проверьте имя вашего первого ввода, так как в конце не должно быть .jpg
.
Наконец,рассмотрите возможность использования $request->file('image'.$i)->isValid()
перед сохранением, чтобы убедиться, что файл действителен.
Наконец
Рассмотрите возможность использования ввода массива, а не пронумерованных полей.Т.е. вызывайте каждое поле {{Form::file('image[]')}}
и используйте поддержку Laravel dot
нотации или foreach($request)->file()