2017-01-01 110 views
1

我想在我的应用程序中上传文件。 这是刀片文件。使用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', '[email protected]'); 
Route::post('/fileUploader', '[email protected]'); 

我得到的channelController.php线48名为FatalThrowableError错误: 呼叫到null的成员函数getClientOriginalName()。

我怎样才能解决这个问题

回答

1

最有可能的,你想调用一个方法 - 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,以确保我们AREN阻止大量上传。

0

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()!!} 

ROUTES

Route::get('/fileUploader', '[email protected]'); 

Route::post('fileUploader', array(
    'as' => 'fileUploader', 
    'uses' => '[email protected]', 
)); 

控制器

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

不要复制过去!我希望它能工作,让我知道任何错误和结果!

+0

我得到空值 – sara99

+0

好吧让我们做一个测试 –

+0

我更新了我的答案 –