php - 使用 laravel 将更多文件上传到文件夹
问题描述
我尝试使用 laravel 将多个文件上传到特定文件夹。我只用一个文件就能做到这一点。但是在我尝试上传多个文件后它不起作用。首先,我尝试制作一个 foreach。但它不起作用我试图在互联网上找到解决方案,但不幸的是我没有找到。有谁能够帮助我?
public function store(Request $request) {
// dd(request()->all());
$this->validate(request(), [
'name' => 'required|unique:lessons|max:20',
'type' => 'required',
'description' => 'required',
'price' => 'required',
'main_picture' => 'required',
'pictures' => 'required'
]);
$input = $request->all();
$images= array();
if($files=$request->file('images')){
foreach($files as $file){
$name=$file->getClientOriginalName();
$file->move('lesson images',$name);
$images[]=$name;
}
}
$lesson = Lesson::create( [
'name' =>$input['name'],
'type' => $input['type'],
'description' =>$input['description'],
'price' => $input['price'],
'main_picture' =>$input['main_picture'],
'pictures'=> implode("|",$images),
]);
$image_name = $request->file('main_picture')->getClientOriginalName();
$id = $lesson->id;
if($request->hasFile('main_picture')) {
$file = $request->file('main_picture');
$file->move('lesson images', $id . "-main-" . $image_name);
}
return redirect('/lessenoverzicht');
}
HTML:
<form method="post" enctype="multipart/form-data" action="/lessenoverzicht/toevoegen">
{{ csrf_field() }}
<div class="form-group">
<label for="name"><span class='required'>*</span>Naam les:</label>
<input type="text" class="form-control" id="name" name="name" placeholder="Voer naam les in..">
</div>
<div class="form-group">
<label for="exampleFormControlSelect1"><span class='required'>*</span>Type</label>
<select name='type' class="form-control" id="type">
<option value="" disabled selected>Select your option</option>
<option value='les'>Les</option>
<option value='workshop'>Workshop</option>
</select>
</div>
<div class="form-group">
<label for="description"><span class='required'>*</span>Omschrijving:</label>
<textarea class="form-control" id="description" name="description" rows="10" placeholder="Voer omschrijving in..."></textarea>
</div>
<label for="description"><span class='required'>*</span>Prijs:</label>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text" id="basic-addon1">€</span>
</div>
<input type="number" value="0.00" min="0" step="1.00" class="form-control" id='price' name='price'>
</div>
<div class="form-group">
<label for="main_picture"><span class='required'>*</span>Main Image:</label>
<input type="file" class='form-control' id='main_picture' name="main_picture">
</div>
<div class="form-group">
<label for="picture">Afbeelding(en) omschrijving:</label>
<input type="file" class='form-control' id='picture' name="pictures" multiple>
</div>
<div class="form-group">
@include('layouts.errors')
</div>
<button type="submit" class="btn btn-primary">Toevoegen</button>
</form>
解决方案
您可以在代码中尝试以下更改吗?我只添加了Array
类型name
属性name="pictures[]"
<input type="file" class='form-control' id='picture' name="pictures[]" multiple>
示例代码:
<form class="form-horizontal" enctype="multipart/form-data" method="post" action="/details">
这用于多项选择:
<input required type="file" class="form-control" name="images[]" placeholder="address" multiple>
PHP 逻辑
public function store(request $request) {
$input=$request->all();
$images=array();
if($files=$request->file('images')){
foreach($files as $file){
$name=$file->getClientOriginalName();
$file->move('image',$name);
$images[]=$name;
}
}
/*Insert your data*/
Detail::insert( [
'images'=> implode("|",$images),
'description' =>$input['description'],
//you can put other insertion here
]);
return redirect('redirecting page');
}
推荐阅读
- react-native - 如何在桌面重定向网站中获取与 branch.io 深层链接相关的数据?
- c++ - LeetCode 65: Valid Number (C++)
- r - 如何使用带有 rtweet 包的 lookup_users() 检索超过 90,000 个用户的数据?
- jquery - How to divide one row in various?
- image - Flutter 中的 360 度交互式图像预览
- c# - Convert XML to C# object
- android - MapSettings.setIsolatedDiskCacheRootPath() is unclear
- c# - 从 2.2 升级到 3 后 ASP.Net Core 身份验证不起作用
- php - 如何将实例传递给 symfony 表单验证器类?
- vba - 将数据从 Excel 发送到 Word 时可以设置页面大小和边距吗?