下面是-> http://laraveldaily.com/upload-multiple-files-laravel-5-4的教程。当我去张贴我的广告时,添加的内容没有照片。我的错误信息是
无法猜测mime类型,因为没有猜测器可用(您启用了php_fileinfo扩展吗?)
我已经启用了php_fileinfo并对服务器进行了重新定位,但是我想知道它是否有效。关于如何解决这个问题还有其他的想法吗?
public function store(Request $request){
$Advert = PropertyAdvert::create([
"address" => $request->address,
"county" => $request->county,
"town" => $request->town,
"type" => $request->type,
"rent" => $request->rent,
"date" => $request->date,
"bedrooms" => $request->bedrooms,
"bathrooms" => $request->bathrooms,
"furnished" => $request->furnished,
"description" => $request->description,
"user_id" => Auth::id(),
]);
foreach ($request->photo as $photo) {
$filename = $photo->store('photo');
PropertyAdvertPhoto::create([
'property_id' => $Advert->id,
'filename' => $filename
]);
}
$id = $Advert->id;
return redirect("/property/$id");
}UploadRequest“请求文件”
这是存储所有验证规则的地方。
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UploadRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$rules = [
'address' => 'required'
];
$photos = count($this->input('photo'));
foreach(range(0, $photos) as $index) {
$rules['photo.' . $index] = 'min:100';
}
return $rules;
}
}上传表格
<form method="POST" action="/property" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="form-group row">
<label for="photo" class="col-md-3 col-form-label text-md-right">Images</label>
<div class="col-md-9">
<input required type="file" class="form-control" name="photo[]" multiple>
</div>
</div>发布于 2018-03-18 15:24:16
您的代码看起来不错,我总是使用foreach,但是循环的问题是您需要使用file方法调用您的fileinput:
foreach( $request->file('photo') as $photo )
PS: $request->photo和$request->file('photo')之间有很大的区别,所以要猜测mime类型,应该使用file方法。
干杯。
发布于 2018-03-19 06:28:54
问题来自于您的验证!
如果你有这样的东西:
$this->validate($request, [
'image' => 'required|mimes:jpg,png,jpeg,gif,svg|max:2048',
]);然后将验证代码替换为:
'image' => 'required|image|max:2048',在我的例子中,我得到了进一步的更新,例如:
'image' => 'required|image|dimensions:min_width=300,min_height=400,ratio=3/4|max:2048',希望这能有所帮助。不幸的是,我没有找到原因-为什么Laravel无法检索MIME类型并验证上传到这里的图像文件!,这可能是因为另一个缺少的PHP扩展。
从医生在这里中查找所有可能的验证案例。
https://stackoverflow.com/questions/49348423
复制相似问题