簡體   English   中英

上傳圖像使用文件系統Laravel時,調用成員函數getClientOriginalName()為null

[英]Call to a member function getClientOriginalName() on null when upload image use file system Laravel

我想在管理數據中使用Laravel存儲文件系統上傳圖像。 但是,當我嘗試上傳圖像時出現錯誤。

在null上調用成員函數getClientOriginalName()

控制者

public function store(Request $request)
{
    $admin              = $request->all();
    $fileName           = $request->file('foto')->getClientOriginalName();
    $destinationPath    = 'images/';
    $proses             = $request->file('foto')->move($destinationPath, $fileName);

    if($request->hasFile('foto'))
    {
        $obj = array (
            'foto'  => $fileName,
            'nama_admin' => $admin['nama_admin'],
            'email' => $admin['email'],
            'jabatan' => $admin['jabatan'],
            'password' => $admin['password'],
            'confirm_password' => $admin['confirm_password']
        );
        DB::table('admins')->insert($obj);
    }
    return redirect()->route('admin-index');
}

視圖

<div class="form-group">
    <label for="" class="col-md-4">Upload Foto</label>
    <div class="col-md-6">
        <input type="file" name="foto">
    </div>                
 </div>

錯誤 錯誤

您可以通過var_dump($request->file('foto')->getClientOriginalName());來檢查是否要獲取文件var_dump($request->file('foto')->getClientOriginalName());

並確保您的表單已設置enctype="multipart/form-data"

<form enctype="multipart/form-data" method="post" action="{{ url('/store')}}">
<div class="form-group">
    <label for="" class="col-md-4">Upload Foto</label>
    <div class="col-md-6">
        <input type="file" name="foto">
    </div>                
</div>
</form>

由於客戶端錯誤

<form enctype="multipart/form-data" method="post" action="{{ url('/store')}}">
<div class="form-group">
    <label for="" class="col-md-4">Upload Foto</label>
    <div class="col-md-6">
        <input type="file" name="foto">
    </div>                
</div>
</form>

您需要在表單內添加enctype="multipart/form-data"

如果您使用的是form builder version

{!! Form::open(['url' => ['store'],'autocomplete' => 'off','files' => 'true','enctype'=>'multipart/form-data' ]) !!}

{!! Form::close() !!}

然后在您的控制器中,您可以檢查請求中是否包含文件

我已經創建了簡單方便的功能來上傳文件

打開您的控制器並粘貼下面的代碼

private function uploadFile($fileName = '', $destinationPath = '')
    {
        $fileOriginalName = $fileName->getClientOriginalName();
        $timeStringFile = md5(time() . mt_rand(1, 10)) . $fileOriginalName;
        $fileName->move($destinationPath, $timeStringFile);
        return $timeStringFile;
    }

store方法

Eloquent

public function store(Request $request)
    {
        $destinationPath    = public_path().'images/';

        $fotoFile='';

        if ($request->hasFile('foto'))
        {
            $fotoFile= $this->uploadFile($request->foto,$destinationPath    );
        }
        Admin::create(array_merge($request->all() , ['foto' => $fotoFile]));
        return redirect()->route('admin-index')->with('success','Admin Created Successfully');
    }

DB Facade版本

如果您正在使用DB使用use Illuminate\\Support\\Facades\\DB; in top of your Controller

public function store(Request $request)
    {
        $admin              =  $request->all();    
        $destinationPath    = public_path().'images/';

        $fotoFile='';

        if ($request->hasFile('foto'))
        {
            $fotoFile = $this->uploadFile($request->foto,$destinationPath    );
        }

        $obj = array (
            'foto'  => $fotoFile,
            'nama_admin' => $admin['nama_admin'],
            'email' => $admin['email'],
            'jabatan' => $admin['jabatan'],
            'password' => $admin['password'],
            'confirm_password' => $admin['confirm_password']
        );

        DB::table('admins')->insert($obj);

        return redirect()->route('admin-index');
    }

希望很清楚

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM