laravel - 获取错误的路线而不是在 laravel 中声明的路线来上传文件
问题描述
我正在尝试上传文件。我照常做,但是当我单击提交按钮时,它没有进入发布路线,而是页面正在刷新。我的文件控制器有什么问题吗?除了我申请上传文件的方法外,是否正确?
add_file.blade.php:
<form class="form-horizontal" action="{{url('upload_file')}}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
<fieldset>
<div class="control-group">
<label class="control-label" for="date01">File name</label>
<div class="controls">
<input type="text" class="input-xlarge" name="file_name" required="" >
</div>
</div>
<div class="control-group" >
<label class="control-label" for="selectError3">Department name</label>
<div class="controls" >
<select id="selectError3" name="department_id"style=" width: 200px">
<option>select department</option>
<?php
$all_department=DB::table('dept')
->get();
foreach($all_department as $v_department){?>
<option value="{{$v_department->department_id}}">{{$v_department->department_name}}</option>
<?php } ?>
</select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="selectError3">Session </label>
<div class="controls">
<select id="selectError3" name="session_id">
<option>select Session</option>
<?php
$all_session=DB::table('session')
->get();
foreach($all_session as $v_session){?>
<option value="{{$v_session->session_id}}">{{$v_session->session_name}}</option>
<?php } ?>
</select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="selectError3">Semester</label>
<div class="controls">
<select id="selectError3" name="semester_id">
<option>select semester</option>
<?php
$all_semester=DB::table('semester')
->get();
foreach($all_semester as $v_semester){?>
<option value="{{$v_semester->semester_id}}">{{$v_semester->semester_name}}</option>
<?php } ?>
</select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="selectError3">Course </label>
<div class="controls">
<select id="selectError3" name="course_id">
<option>select course </option>
<?php
$all_course=DB::table('course')
->get();
foreach($all_course as $v_course){?>
<option value="{{$v_course->course_id}}">{{$v_course->course_code}}</option>
<?php } ?>
</select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="fileInput">Upload file</label>
<div class="controls">
<input class="input-file uniform_on" name="file_any" type="file" required="">
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary">Add File</button>
<button type="reset" class="btn">Cancel</button>
</div>
</fieldset>
</form>
文件控制器@存储文件:
public function store(Request $request)
{
$this->validate($request,[
'file_name' =>'required',
'file_path' =>'required',
'department_id' => 'required',
'session_id' => 'required',
'semester_id' => 'required',
'course_id' => 'required',
]);
$file = $request->file('file_any');
$name= $file->getClientOriginalName();
$extension= $file->getClientOriginalExtension();
$size = $file->getClientSize();
$newName= $name . '.' . $extension;
$path= Storage::putFileAs('public',$request->file('file_any'),$newName);
$files= File::create([
'file_name' => $newName,
'file_path' => $path,
'department_id' => $request->department_id,
'session_id' => $request->session_id,
'semester_id'=> $request->semester_id,
'user_id' => Auth::id(),
'course_id' => $request->course_id,
'file_ext' => $extension,
'file_size' => $size,
]);
Session::put('message','File added successfully !!!');
return redirect()->back();
}
路线:
Route::post('upload_file', 'fileController@store');
Route::get('/add_files', 'fileController@create');
解决方案
似乎file_path
在您的验证中是必需的。您必须file_path
在表单中添加输入。您也可以尝试在视图表单中添加错误显示。例如,将其添加到您的视图表单中:
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
推荐阅读
- python - 如何在 DJANGO_SETTINGS_MODULE 中定义环境变量?
- java - Document Root-Element "beans" 必须匹配 DOCTYPE-Root "xml"
- python - 带有字符的 Python 列表/集合理解
- html - 旋转中间 flex 列效果
- android - 搜索视图或带有子菜单的对话框?
- python - MySQLdb/_mysql.c(29):致命错误 C1083:无法打开包含文件:'mysql.h':没有这样的文件或目录
- java - Hibernate:如何在争用/高并发下推理 Optimistic Locking Exception?
- c - 寄存器变量导致执行时间不同,为什么?
- .net-core - 如何读取要在 Azure WebApp for Linux 上部署的 .net core 2.1 mvc 应用程序的 appsettings.json
- google-apps-script - 谷歌应用程序脚本,如何创建一个在更改工作表名称时激活的事件对象脚本?