由于某些原因,我的脚本返回noimage.jpg并且没有存储图像。不太清楚为什么?它构造了正确的文件名,但出于某种原因似乎不符合这两个术语?例如它构建了' image1'但当' image1'填写的字段看不到它们匹配?
用户上传照片
<div class="section4 ">
<div class="row">
<div class="col-lg-3">
<div class="form-group">
{{Form::file('image1.jpg')}}
</div>
<div class="form-group">
{{Form::file('image2')}}
</div>
<div class="form-group">
{{Form::file('image3')}}
</div>
<div class="form-group">
{{Form::file('image4')}}
</div>
</div>
</div>
</div>
控制器:
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= $filename.'_'.time().'.'.$extension;
// Upload Image
$path = $request->file('image'.$i)->storeAs('public/cover_images', $fileNameToStore);
} else {
$fileNameToStore = 'noimage.jpg';
}
}
答案 0 :(得分:0)
$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
notation或foreach($request)->file()