Laravel文件在输入字段中上传的名称不正确

时间:2018-08-01 12:09:36

标签: php laravel laravel-5 laravel-5.2

在更新记录时,我创建了一个使用文件上传替换图像的选项,但是在$ request-> file('headerbanner')中这样做时,它会以/ tmp / phpCccApH的形式保存在数据库中

控制器代码:

public function update(Request $request, $id)
{ 

    $clientnewstore = Clientusers::find($id); 
    if($request->hasFile('headerbanner')) {

        $headerbanner = $request->file('headerbanner');
        $mod_headerbanner= date('Y-m-d').'-'.'MQ'.rand(1, 999).'-'.$headerbanner->getClientOriginalName(); 
        $headerbanner->storeAs(public_path().'banners',$mod_headerbanner);
        $request['headerbanner'] = $mod_headerbanner;  

    }


    if($request->hasFile('footerbanner')) {            
        $footerbanner = $request->file('footerbanner');
        $mod_footerbanner= date('Y-m-d').'-'.'MQ'.rand(1, 999).'-'.$footerbanner->getClientOriginalName();
        $footerbanner->storeAs('banners',$mod_footerbanner);
        $request['footerbanner'] = $mod_footerbanner;
    }




    Clientusers::find($id)->update($request->all());

   $request->session()->flash('message','Record Successfully Updated');
    return redirect('/user_accounts');
}

HTML文件

        <form action="/user_accounts" method="POST" enctype="multipart/form-data">
                   {{ csrf_field() }}
            <h4> Header / Footer Settings</h4>
            <div class="form-group row py-2">
                <div class="col-sm-6 pr-4">
                    <label for="headerbanner">Header Banner</label>
                    <input type="file" class="form-control"  id="headerbanner"  name="headerbanner"    />
                </div> 

                <div class="col-sm-6">  
                    <label for="footerbanner">Footer Banner</label>
                    <input type="file" class="form-control"  id="footerbanner" class="form-control"   name="footerbanner" >
                </div>    
            </div>   
      <div class="float-right text-right">
         <button type="submit" class="btn btn-success float-right">
             <i class="fas fa-check px-2"></i> Save
         </button>
      </div>   

3 个答案:

答案 0 :(得分:0)

运行命令“ php artisan storage:link”

尝试以下类似方法。

if ($request->hasFile('footerbanner')) {
        $file = $request->footerbanner;
        $imageurl = Storage::disk('local')->put($current_timestamp . '-' . $file->getClientOriginalName(), file_get_contents($file), 'public');
        ; // To make file unique in the same folder.
    }

之后,您可以将该图像URL存储到模型中。

答案 1 :(得分:0)

尝试一下:

 there are  1000000  rows
3.338970422744751

注意:请确保您在storage / app / public /

中有上传文件夹

答案 2 :(得分:0)

我已使用以下功能保存我的个人资料图像-您可以尝试此操作。我刚刚按照您的要求编辑了图像名称。

public function save_profile_image(Request $request)
{
    $image = $request->file('profile_image');
    $destinationPath = public_path('/profile_images');

    $image_name = date('Y-m-d').'-'.'MQ'.rand(1, 999).'-'.$request->file('profile_image')->getClientOriginalName()
    $image->move($destinationPath, $image_name);

    $image_path = $destinationPath.'/'.$request->file('profile_image')->getClientOriginalName();
    if (!File::exists($image_path)) {
        return response()->json(['msg'=>'File not found','success'=>false,'code'=>401]);
    }

    $image_url = url('/public/profile_images/'.$image_name);

    return $image_url;
}