简体   繁体   English

上传图像使用文件系统Laravel时,调用成员函数getClientOriginalName()为null

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

I want to upload an image using Laravel storage file system in my admin data. 我想在管理数据中使用Laravel存储文件系统上传图像。 However, there's an error when I attempt to upload an image. 但是,当我尝试上传图像时出现错误。

Call to a member function getClientOriginalName() on null 在null上调用成员函数getClientOriginalName()

Controller 控制者

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');
}

View 视图

<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>

Error 错误 错误

You can check wheather you are getting file or not by var_dump($request->file('foto')->getClientOriginalName()); 您可以通过var_dump($request->file('foto')->getClientOriginalName());来检查是否要获取文件var_dump($request->file('foto')->getClientOriginalName());

And make sure your form has enctype="multipart/form-data" set 并确保您的表单已设置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>

Error because of client Side 由于客户端错误

<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>

you ned to add enctype="multipart/form-data" inside the form 您需要在表单内添加enctype="multipart/form-data"

If You are using the form builder version 如果您使用的是form builder version

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

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

Then In your Controller You can check if the request has the file 然后在您的控制器中,您可以检查请求中是否包含文件

I have Created the simple handy function to upload the file 我已经创建了简单方便的功能来上传文件

Open Your Controller And Paste the code below 打开您的控制器并粘贴下面的代码

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

And the store method store方法

Eloquent way 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 Version DB Facade版本

if You are using DB use use Illuminate\\Support\\Facades\\DB; 如果您正在使用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');
    }

Hope it is clear 希望很清楚

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 laravel 上传文件 - 调用成员函数 getClientOriginalName - laravel upload file - Call to a member function getClientOriginalName CRUD(更新)上载文件出现问题“对成员函数getClientOriginalName()的调用为null” - Problem with CRUD(update) Upload File “call to a member function getClientOriginalName() on null” Laravel 5.3文件上载调用字符串上的成员函数getClientOriginalName() - Laravel 5.3 File Upload Call to a member function getClientOriginalName() on string 在 null 上调用成员 function getClientOriginalName() 时出错 - Laravel 8 - Error Call to a member function getClientOriginalName() on null - Laravel 8 使用 laravel 在 null 上调用成员函数 getClientOriginalName() - call to a member function getClientOriginalName() on null using laravel 在 null laravel 上调用成员函数 getClientOriginalName() - Call to a member function getClientOriginalName() on null laravel 在null上调用成员函数getClientOriginalName() - Call to a member function getClientOriginalName() on null php-在null上调用成员函数getClientOriginalName()并删除警报laravel - php - Call to a member function getClientOriginalName() on null and remove alert laravel 在 null laravel 上调用成员函数 getClientOriginalName() 并使用 jquery - Call to a member function getClientOriginalName() on null laravel and using jquery Laravel“文件上传错误调用非对象上的成员函数getClientOriginalName()” - Laravel “File Upload Error Call to a member function getClientOriginalName() on a non-object”
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM