我创建了一个上传文件的表单,但在提交时它返回一个空值。当我添加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>
MY CONTROLLER:我正在使用导入方法
<?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);
}
}
答案 0 :(得分:0)
以下是一些尝试解决此问题的方法。
首先,在导入方法中,在其顶部添加dd($request->all())
,看看响应是什么。您应该看到所有表单数据,当然还有template_upload
文件。这就是你如何确保从表单到控制器方法看到所有即将到来的数据。
然后尝试摆脱ImportTypeRequest
并使用Illuminate\Http\Request
看看你会得到什么。如果您得到不同的结果,则问题出在ImportTypeRequest
类。
那你为什么不用$request->template_upload
?!我觉得它更干净。