【发布时间】:2020-03-16 22:08:36
【问题描述】:
我正在尝试在 laravel 中验证上传文件。
该文件只接受xlsx,xls and csv
我的控制器有这个工作代码
public function project_import_excel(Request $request){
$validator = Validator::make($request->all(), [
'file' => 'required|max:5000|mimes:xlsx,xls,csv'
]);
$modal = "active";
if($validator->passes()){
return redirect()
->back()
->with(['success'=>'File uploaded successfully!'])
->with('modal',$modal);
}else{
return redirect()
->back()
->with(['errors'=>$validator->errors()->all()])
->with('modal',$modal);
}
}
我的blade 文件中有errors and success 的此会话
@if(session('errors'))
<div class="alert alert-danger" role="alert">
@foreach($errors as $error)
<li>{{$error}}</li>
@endforeach
</div>
<hr>
@elseif(session('success'))
<div class="alert alert-success" role="alert">
{{ session('success') }}
</div>
<hr>
@endif
如果我尝试上传.jpeg 或任何其他不是xlsx, xls, or csv 的文件
这会给我一个类似的消息
但是如果我上传一个像`
不想显示成功消息。我的if else 有什么问题吗?
问题是,它总是以session('errors')结束
更新
我试图删除这个mimes:xlsx,xls,csv 并且session('success') 工作正常。但是如何验证哪些文件是可接受的?
我的HTML 代码form
<div class="modal fade" id="bulkProjMod" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<!--Header-->
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel">Upload Projects List</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<!--Body-->
<div class="modal-body">
<div class="container">
@include('main.projectlistRedirectBack')
<p class="note note-success">
<strong>Note upload:</strong>
You are trying to upload multiple project records that containas multiple task records. This record will be useful to any transaction
<br>
*format : <b><em>xlsx,xls,csv</em></b><br>
</p>
<form action="{{ url('/projectlist/project_import_excel') }}" method="POST" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="file-field">
<div class="btn-sm float-left">
<span>Choose file</span>
<input type="file" name="file" id="file">
</div>
</div>
</div>
</div>
<!--Footer-->
<div class="modal-footer">
<button type="button" class="btn btn-outline-success" data-dismiss="modal">Close</button>
<button type="submit" name="submitImport" class="btn btn-success waves-effect" id="upBulkSubmit">Upload</button>
</form>
</div>
</div>
</div>
</div>
试过这个dd($validator);
【问题讨论】:
-
尝试状态:
redirect()->back()->with('status', 'File uploaded successfully!')->with('modal',$modal);。然后在刀片@if (session('status')) <div class="alert alert-success"> {{ session('status') }} </div> @endif -
我也尝试将变量
success更改为status但仍然相同 -
您的表单上有 enctype="multipart/form-data" 吗?
-
是的,我的表单上有这个属性
enctype="multipart/form-data" -
上传excel文件时能否dd
request或$validator查看文件是否存在?