使用Laravel 5.3上传文件

时间:2017-01-01 15:26:57

标签: php html laravel-5.3

我想在我的应用中上传文件。 这是刀片文件。

<form action="/fileUploader " files="true" method="post" role="form" name="file" id="chan" >
        <input type="hidden" name="_token" value="{{ csrf_token() }}">
        <div class="panel panel-default">

            <label>Please Select a File to Upload</label>
             <input type="image">
             <button type="submit" name ="Upload_File">Upload File</button>
        </div>
    </form>

这是我的控制器文件

public function viewFile()
 {
     return View::make('/fileUploader');
 }

    public function showfileupload(Request $request)
    {
        $file = $request -> file('image');
        // show the file name
        echo 'File Name : '.$file->getClientOriginalName();
        echo '<br>';

        // show file extensions
        echo 'File Extensions : '.$file->getClientOriginalExtension();
        echo '<br>';

        // show file path
        echo 'File Path : '.$file->getRealPath();
        echo '<br>';

        // show file size
        echo 'File Size : '.$file->getSize();
        echo '<br>';

        // show file mime type
        echo 'File Mime Type : '.$file->getMimeType();
        echo '<br>';

        // move uploaded File
        $destinationPath = 'uploads';
        $file->move($destinationPath,$file->getClientOriginalName());
    }

这是web.php文件

Route::get('/fileUploader', 'channelController@viewFile');
Route::post('/fileUploader', 'channelController@showfileupload');

我在channelController.php第48行收到一个名为FatalThrowableError的错误: 在null上调用成员函数getClientOriginalName()。

我该如何解决这个问题

2 个答案:

答案 0 :(得分:1)

最有可能的是,您试图在一个不存在的对象上调用方法 - getClientOriginalName(),因此它为空。这与您看到的错误消息相吻合。

我不确定原因,但我们可以开始倒退了。在尝试hasFile()之前,让我们使用带有move()方法的if语句来验证文件是否实际存在于请求中。

if ($request->hasFile('image')) {
    $file->move($destinationPath,$file->getClientOriginalName());
}

如果执行上述操作,错误是否仍然存在?

以下是Laravel 5.3 Docs on file uploads。它可能会给你更多的想法。

如果您发现用户正在发布文件且hasFile()仍然返回布尔值FALSE,那么您可能想要深入了解php.ini文件并查看{{1}或Post_max_size以确保我们不会阻止大型上传。

答案 1 :(得分:0)

查看

{!! Form::open(['route'=>'fileUploader', 'id'=>'chan', 'files' => true] )!!}

        <div class="panel panel-default">

            <label>Please Select a File to Upload</label>
                 <input type="file" name="image">
            <button type="submit">Upload File</button>
        </div>
{!! Form::close()!!}

<强>路线

Route::get('/fileUploader', 'channelController@viewFile');

Route::post('fileUploader', array(
    'as' => 'fileUploader',
    'uses' => 'channelController@showfileupload',
));

<强> CONTROLLER

public function showfileupload(Request $request){
   $file = $request -> file('image');
   dd($file); // This work well for me and return information about the image
}

复制并过去!我希望它能奏效,让我知道任何错误和结果!