2015-05-24 65 views
2

好吧..我不知道你有多少人在Laravel有這個問題..我找不到任何解決方案。laravel 5 mime圖像驗證上傳一個MP3或MP4時拋出異常

我使用Validator通過設置MIME類型jpeg,bmp和png的規則驗證上傳的圖像。 如果不是這些類型,我會顯示一條錯誤消息。

它適用於所有文件類型,但是當我上傳一個mp3或mp4時,它會在我的控制器中顯示一個異常。

MyImageController.php代碼:

public function addImageDetails() 

    { 

    $input = Request::all(); 

    $ID = $input['ID']; 
    $name = $input['name']; 

    $file = array('image' => Input::file('image')); 

    $rules = array('image' => 'required|mimes:jpeg,jpg,bmp,png'); 


    $validator = Validator::make($file, $rules); 
    if ($validator->fails()) { 

    \Session::flash('flash_message_error','Should be an Image'); 

     return view('addDetails'); 
    } 

    else { 

     //If its image im saving the ID, name and the image in my DB 
    } 

這是我上傳的MP3或MP4

 ErrorException in MyImageController.php line 25: 
     Undefined index: ID 

驗證所有其他文件類型,如[.TXT,.DOC,我得到的錯誤, .PPT,.EXE,的.torrent]等。

+0

也許'$輸入[ '身份證']'? –

+0

發現問題不在於mp3或mp4 .. itz與我上傳的大小..如果它太大,然後php有空post變量它似乎..這就是爲什麼我要開始undefined索引:ID .. – sathyadev

+0

這就是大。那麼你應該把它作爲答案。 –

回答

1

一旦你分配Request::all();給變量$input

$input = Request::all(); 

那麼你應該檢查是否有任何價值

if (isset($input['ID'])) 

如果條件滿足,您應允許它繼續進一步操作,否則您應該返回視圖r錯誤消息,如下面給出的代碼。

if (isset($input['ID'])) 
{ 
    $ID = $input['ID']; 
    $name = $input['name']; 
    $file = array('image' => Input::file('image')); 
} 
else 
{ 
    return view('addDetails')->with('message', 'Image size too large');; 
} 

更新:

在這裏,您檢查圖像類型

if (isset($input['ID'])) 
{ 
if (Input::file('image')) 
{ 
    $ID = $input['ID']; 
    $name = $input['name']; 
    $file = array('image' => Input::file('image')); 
else 
{ 
    return view('addDetails')->with('message', 'Uploaded file is not an image');; 
} 
} 
else 
{ 
    return view('addDetails')->with('message', 'Image size too large');; 
} 
+0

非常感謝:)但仍然這種邏輯還會顯示消息更大的非圖像文件知道??找出一種方法.. – sathyadev

+0

是的,我們可以改變它..你想顯示更大的非圖像文件的其他錯誤信息? –

+0

是的請..我可以把另一個如果在其他部分.. – sathyadev

0

這個乾淨的代碼試試:

public function addImageDetails(Request request){ 
    $this->validate($request, [ 
     'image' => ['required', 'image'] 
    ]); 

    //If its image im saving the ID, name and the image in my DB 

} 

有一個名爲image規則,可以對你有所幫助在這種情況下

+0

我也試過這..但它沒有工作..發現了問題與我上傳的文件的大小有關。如果它太大會引發錯誤..你能否建議我解決這個問題? – sathyadev

+0

考慮編輯'php.ini'文件中的'upload_max_filesize'來設置足夠的文件上傳的限制大小 – manix

+0

upload_max_filesize在php.ini文件中是64M ..但是我不能用3mb甚至上傳大小..任何想法? – sathyadev