使用 Laravel 5.3 上传文件

Upload file using Laravel 5.3

我想在我的应用程序中上传文件。 这是 blade 文件。

<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()。

我该如何解决这个问题

很可能,您正在尝试调用一个方法 - getClientOriginalName() - 在一个不存在的对象上,所以它是空的。这与您看到的错误消息一致。

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

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

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

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

如果您发现用户正在发布文件并且 hasFile() 仍然返回布尔值 FALSE,那么您可能需要深入研究 php.ini 文件并查看 Post_max_sizeupload_max_size values 以确保我们不会阻止大量上传。

VIEW

{!! 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',
));

控制器

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

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