上传文件在laravel 5.1中不起作用

时间:2017-06-09 08:12:31

标签: php laravel

我想上传一个.CSV文件,将一些记录插入我的数据库。

不幸的是,它不起作用。

我的路线:

Route::get('excel/import','Backend\ExcelController@getImport');
Route::post('excel/import','Backend\ExcelController@postImport');

我的控制器:

public function getImport(){

    $csrf_field = csrf_field();
    $postUrl='import';
    $html = <<<CREATE
    <form action="$postUrl" method="post">
        $csrf_field
        <input type="file" name="importCsv" formenctype="multipart/form-data" ><br/><br/>

        <input type="submit" value="submit"/>
    </form> 
CREATE;
   return $html;
}


public function postImport(Request $request){
    //get file
    $file = Input::file('importCsv');
    dd($file);
   $upload=$request->file('importCsv');
   dd($upload);
}

如果我使用它只打印null:

Input::file('importCsv');<br>

如果我使用的话,没有任何内容:

$request ->file('importCsv');<br><br>

所以,我尝试打印dd($request->all()); <br>

array:2 [▼
"_token" => "wPuAXUvSItR4MFJ4bAjQhanaf0W9avrqR2PgjxcU"
"importCsv" => "T_OpusDef.csv"
]

我只能得到这个名字,当我想要getRealPath()的路径时,它告诉我:

FatalErrorexception: call to a memeber function getRealPath() on null

我需要你的帮助,非常感谢

2 个答案:

答案 0 :(得分:1)

表单应如下所示:

<form action="{{ $postUrl }}" method="post" enctype="multipart/form-data">
    {{ $csrf_field }}
    <input type="file" name="importCsv"><br/><br/>
    <input type="submit" value="submit">
</form> 

答案 1 :(得分:1)

使用 {{csrf_field()}} 代替 $ csrf_field (如果它位于刀片中)和 csrf_field()(如果它位于控制器中)