#laravel #multiple-file-upload
#laravel #загрузка нескольких файлов
Вопрос:
Я хочу загружать несколько изображений одновременно, но это не работает.
Блейд / Просмотр
<form action="{{ url('admin/image/upload') }}" method="POST"enctype="multipart/form-data">
@csrf
<td><input type="text" name="Fields[0][title]" placeholder="Enter title" class="form-control" /></td>
<td><input type="file" name="Fields[0][image]" class="form-control" /></td>
</form>
Контроллер
$request->validate([
'Fields.*.title' => 'required|max:25|min:5',
'Fields.*.image' => 'required',
]);
if($request->hasFile('image'))
{
$file=$request->file('image');
$file_name=hexdec(uniqid());
$ext=strtolower($file->getClientOriginalExtension());
$file_full_name=$file_name.'.'.$ext;
$upload_path='image/';
$file_url=$upload_path.$file_full_name;
$success=$file->move($upload_path,$file_full_name);
$Fields['image']=$file_url;
foreach ($request->Fields as $key => $value) {
images::create($value);
}
return back()->with('success', 'Image Has Been Saved Successfully.');
}
Комментарии:
1. проверьте эту строку
if($request->hasFile('image'))
, у вас нет ни одного файла, вызванногоimage
2. Что я должен написать?
3. Я думаю, вам не нужно динамическое поле здесь, измените
name="Fields[0][image]"
наname="image"
4. Мне нужно динамическое поле.
5. Если вы примете мой ответ, вы получите массив изображений и полей ввода, и вы должны получить доступ к throgh «foreach ($request->file(‘image’) как $img) { echo $img }»
Ответ №1:
Пожалуйста, следуйте приведенному ниже ответу:
напильник для лезвий
<form action="{{ url('admin/image/upload') }}" method="POST"enctype="multipart/form-data">
@csrf
<td><input type="text" name="Fields[]" placeholder="Enter title" class="form-control" multiple /></td>
<td><input type="file" name="image[]" class="form-control" multiple /></td>
</form>
контролер
$request->validate([
'Fields.*' => 'required|max:25|min:5',
'image.*' => 'required',
]);
if($request->hasFile('image'))
{
// dd($request->image)
foreach ($request->image as $file) {
dd($file)
//get filename with extension
$filenamewithextension = $file->getClientOriginalName();
//get filename without extension
$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);
//get file extension
$extension = $file->getClientOriginalExtension();
//filename to store
$filenametostore = $filename . '_' . time() . '.' . $extension;
}
return back()->with('success', 'Image Has Been Saved Successfully.');
}
Комментарии:
1. Я получаю сообщение об ошибке » Вызов функции-члена getClientOriginalExtension() для массива »
2. Протестируйте с помощью dd (), затем продолжайте шаг за шагом
3. Я скопировал и вставил это.
4. скопировать, пройти сейчас и протестировать с помощью dd ()
5. вы не получаете никаких данных в функции dd ()?