2016-06-10 86 views
0

在这里,我尝试将用户的图像存储在数据库中时,他们上传它的形式,当他们上传图像获取存储在数据库中,但以BIN文件大小只有7字节或14个字节,在数据库中它看起来像[BLOB-14B]和[BLOB-7B]。但是,当我通过直接上传数据库进行检查时,它工作得很好。什么是这里的问题图像文件没有正确存储在Mysql数据库与Laravel

这里的原因是形式的代码来获取用户的图像

<div class="form-group"> 
<label class="col-md-4 control-label">Upload image</label> 

    <div class="col-md-6"> 
     <input type="file" class="form-control" name="image" id="image"> 


    </div> 
</div> 

我不包括在这里,整个表单代码,并已列入仅获得图像文件的代码。

这里是控制器功能代码

public function prof_details(Request $request) 
    { 
     $post = $request->all(); 

     $val=\Validator::make($request->all(), 

     [ 
      'firstname' => 'required', 
      'lastname' =>  'required', 
      'username' =>  'required', 
      'phone'=>   'required', 
      'nationality' => 'required', 
      'dobmonth' =>  'required', 
      'dobyear' =>  'required', 
      'dobday' =>  'required', 
      'image' =>  'required', 

     ] 


     ); 

    if ($val ->fails()) 
    { 

     return redirect()->back()->withErrors($val->errors()); 

    } 

    else 
    { 
     $data = array(

      'firstname' => $post['firstname'] , 
      'lastname' => $post['lastname'], 
      'username' => $post['username'], 
      'phone' => $post['phone'], 
      'nationality' => $post['nationality'], 
      'dobmonth' => $post['dobmonth'], 
      'dobyear' => $post['dobyear'], 
      'dobday' => $post['dobday'], 
      'image' =>$post['image'], 



      ); 

     $updatedata = DB::table('users')->where('name',\Auth::user()->name) 
     ->update($data); 



     if ($updatedata>0) { 


      return redirect('home'); 
    } 
    else 
    { 
     return "something"; 
    } 


    } 
} 
+0

'$ post ['image']'变量究竟是什么?您是否已将上传文件的内容读入该变量中? – Shadow

回答

0
<input type="file" class="form-control" name="image" id="image"> 

文件并不存储在$ _ POST变量,而是存储在一个临时文件。您可以从$ _FILES变量1 [2]获取此文件中的数据。

因此,您上传的文件信息将位于$ _POST ['image']中。为了获得实际的图像,您需要读取存储在$ _POST ['image'] ['tmp_name']中的临时文件。

+0

Laravel有一个API来处理文件上传... – Shadow