2017-01-01 107 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

我更新了我的答案 –