Laravel 5.5 - $request->file returns 空
Laravel 5.5 - $request->file returns null
我创建了一个上传文件的表单,但是当我提交时它 returns 是一个空值。当我添加 enctype="multipart/form-data" 时,它会重新加载页面并且似乎没有通过我的控制器。
我的 HTML 表格
<form class="form-horizontal" role="form" name="importform" method="POST" action="{{ route('import_type') }}" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="control-group">
<label class="control-label"> </label>
<div class="controls">
<div class="control-group text-center">
<label class="btn btn-primary" for="file-selector">
<input id="file-selector" name="template_upload" type="file" value="" required autofocus style="display:none" onchange="$('#upload-file-info').html(this.files[0].name)" required> Upload List </label>
<span class='label label-default' id="upload-file-info"></span>
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<input class="btn btn-primary" type="submit" id="import-submit" name="import-submit">
</div>
</div>
</form>
我的控制器:我正在使用导入方法
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\ImportTypeRequest;
use \App\Guest;
use \App\Role;
use \App\User;
use \App\Type;
use Illuminate\Support\Facades\Auth;
class GuestController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$user = User::with('roles')->where('id', Auth::id())->get();
$types = Type::where('user_id', Auth::id())
->where('active',1)->get();
return view('view_import',compact('user','types'));
}
public function import(ImportTypeRequest $request)
{
$template_upload = $request->file('template_upload');
dd($template_upload);
}
}
这里有一些尝试解决此问题的建议方法。
首先,在您的导入方法中,在其顶部添加 dd($request->all())
并查看响应。您应该会看到所有表单数据,当然还有 template_upload
文件。这就是您确保看到从表单到控制器方法的所有传入数据的方式。
然后尝试摆脱 ImportTypeRequest
并只使用 Illuminate\Http\Request
看看你会得到什么。如果您得到不同的结果,那么问题出在 ImportTypeRequest
class.
那你为什么不直接使用 $request->template_upload
?!我猜它更干净。
我创建了一个上传文件的表单,但是当我提交时它 returns 是一个空值。当我添加 enctype="multipart/form-data" 时,它会重新加载页面并且似乎没有通过我的控制器。
我的 HTML 表格
<form class="form-horizontal" role="form" name="importform" method="POST" action="{{ route('import_type') }}" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="control-group">
<label class="control-label"> </label>
<div class="controls">
<div class="control-group text-center">
<label class="btn btn-primary" for="file-selector">
<input id="file-selector" name="template_upload" type="file" value="" required autofocus style="display:none" onchange="$('#upload-file-info').html(this.files[0].name)" required> Upload List </label>
<span class='label label-default' id="upload-file-info"></span>
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<input class="btn btn-primary" type="submit" id="import-submit" name="import-submit">
</div>
</div>
</form>
我的控制器:我正在使用导入方法
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\ImportTypeRequest;
use \App\Guest;
use \App\Role;
use \App\User;
use \App\Type;
use Illuminate\Support\Facades\Auth;
class GuestController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$user = User::with('roles')->where('id', Auth::id())->get();
$types = Type::where('user_id', Auth::id())
->where('active',1)->get();
return view('view_import',compact('user','types'));
}
public function import(ImportTypeRequest $request)
{
$template_upload = $request->file('template_upload');
dd($template_upload);
}
}
这里有一些尝试解决此问题的建议方法。
首先,在您的导入方法中,在其顶部添加 dd($request->all())
并查看响应。您应该会看到所有表单数据,当然还有 template_upload
文件。这就是您确保看到从表单到控制器方法的所有传入数据的方式。
然后尝试摆脱 ImportTypeRequest
并只使用 Illuminate\Http\Request
看看你会得到什么。如果您得到不同的结果,那么问题出在 ImportTypeRequest
class.
那你为什么不直接使用 $request->template_upload
?!我猜它更干净。