2014-11-14 70 views
0

我使用Laravel PHP,並且我有一個照片庫,允許用戶將圖片上傳到相冊。當我上傳小於8MB的正常文件大小的圖像時,它們會被上傳並保存到相冊中。但是,當我嘗試上傳大於8MB的圖像時,我不斷收到'調用成員函數getClientOriginalName()null'錯誤Laravel PHP:使用大文件尺寸上傳圖片導致'getClientOriginalName()'爲'null'

爲了說明被上傳到照相館大的圖像,我分別編輯「nginx.conf」和「php.ini中」,所以,在「nginx.conf

client_max_body_size 8M; 

前行改爲

client_max_body_size 25M; 

而且在 'php.ini中',這條線:

upload_max_filesize = 8M 

改爲:

upload_max_filesize = 25M 

在這兩個文件進行更改後,在膩子我跑:

sudo service nginx restart 
sudo service php5-fpm restart 

這是我上傳新的照片控制器:

public function store() 
{ 
    $input = \Input::all(); 

    $validation = new Validators\Stone_Photo; 

     $filename = str_random(4) . \Input::file('photo_path')->getClientOriginalName(); 
     $destination = "uploads/photos/"; 
     $upload = \Input::file('photo_path')->move($destination, $filename); 

     if($upload == false) 
     { 
      return \Redirect::to('home.index') 
      ->withInput() 
      ->withErrors($validation->errors) 
      ->with('message', 'Could not upload picture'); 
     } 

     $this->stone_photo->create($input, $filename); 
     return \Redirect::route('show_stone', array('id' => $input['stone_id'])); 
} 

所以再次,8MB以下的照片仍然可以正常上傳,但當我嘗試上傳9MB或以上的照片時,我總是收到錯誤'調用成員函數ñgetClientOriginalName()null'錯誤,我不知道爲什麼。任何幫助是極大的讚賞。

回答

2

由於您的控制器操作是store我猜你有一個restfull控制器,對於該操作HTTP方法是POST。如果這是你需要確保你集還設置post_max_sizephp.ini的情況:

post_max_size = 25M 

否則upload_max_filesize將重寫通過的post_max_size值(默認情況下爲8MB)任何POST請求。

+0

這聽起來像是一個很好的解決方案。當我回到我的工作電腦時,我一定會在早上第一時間嘗試一下。非常感謝! – 2014-11-15 05:00:07

+0

您的解決方案非常完美!我按照你的說法編輯了我的'php.ini'文件,現在我可以發佈高內存大小的圖像。非常感謝Bogdan! – 2014-11-17 14:32:57