【问题标题】:Upload file using Laravel 5.3使用 Laravel 5.3 上传文件
【发布时间】:2017-01-01 15:26:57
【问题描述】:

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

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

我该如何解决这个问题

【问题讨论】:

    标签: php html laravel-5.3


    【解决方案1】:

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

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

    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 到确保我们没有阻止大型上传。

    【讨论】:

      【解决方案2】:

      查看

      {!! 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
      }
      

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

      【讨论】:

      • 我得到空值
      猜你喜欢
      • 2017-02-23
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 2017-05-05
      • 2017-04-27
      • 1970-01-01
      • 2017-09-03
      • 2017-06-04
      相关资源
      最近更新 更多