[英]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>
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.