未存储在laravel项目中的图像文件
你好,我需要你们的帮助。我创建一个laravel项目中,我已经修改了默认用户表,用于存储用户的更多的信息像名和用户图像文件名。因此,我不得不修改'RegisterController'类,其中'创建'功能已被修改,并且我还添加了'更新'方法来存储上传的图像文件。下面是我的“RegisterController”类的代码:未存储在laravel项目中的图像文件
protected function update(array $data)
{
$path = $data['img']->storeAs('/public','ohgod ');
return $path;
}
protected function create(array $data)
{
$filename;
$filename = $data['img']->getClientOriginalName();
$filesize = $data['img']->getClientSize();
$this->update($data);
return User::create([
'name' => $data['name'],
'img_name' => $filename,
'img_size' => $filesize,
'username' => $data['username'],
'dob' => $data['dob'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
有了这个,我也不得不修改形式得到添加的用户的信息。现在,当我注册为新用户时,我可以在用户表中获得一切,但图像文件未存储在服务器中。
我是laravel中的新手,所以我不知道我的代码有什么问题。我也没有收到任何错误消息。所以帮帮我吧。
我得到的文件从laravel官方网站存储代码https://laravel.com/docs/5.5/filesystem
你必须移动图像插入到数据库之前,文件夹
$destinationPath='images';
$filename = $data['img']->getClientOriginalName();
//move iamge to folder
$fileName = str_random(30).'.'.$data['img']->clientExtension();
$data['img']->move($destinationPath, $fileName);
移动的文件将公开提供/ images文件夹
$image = time().'.'.$data['img']->getClientOriginalExtension();
$ data ['img'] - > move(public_path('images'),$ image);
在发送到数据库之前将图像存储在公共图像文件夹中的最佳方式。
谢谢曼它工作。 !!你摇滚! –
如果您正在使用laravel
形式再使用
{!! Form::open(['url' => url('background'), `'files'=>true,` 'method' => 'post', 'class' => 'form-horizontal']) !!}
,如果你使用的是简单的HTML表单,然后使用下面的代码
<form enctype="multipart/form-data"><form>
我希望它为你工作。
,你可以去照亮\基金会\身份验证\ RegistersUsers特质,并把你的形象代码到寄存器方法
public function register(Request $request)
{
$this->validator($request->all())->validate();
$fields = $request->all();
if ($request->hasFile('avatar'))
$fields['avatar'] = $request->avatar->store('users', ['disk' => 'public']);
$user = $this->create($fields);
event(new Registered($user));
$this->guard()->login($user);
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
然后去到App \ HTTP \控制器\验证\ RegisterController并追加图像转换成数据阵列中create方法
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'username' => $data['username'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'avatar' => $data['avatar'],
'headline' => $data['headline'],
'summary' => $data['summary'],
]);
}
此解决方案是否将图像保存在数据库和服务器公用文件夹中。因为我想保存图像,只能在公共文件夹中为上传的图像指定一个唯一的名称。而在数据库中,我只想保存图像名称和大小而不是图像本身。 –
这个大小保存数据库中的图像路径,您可以检测注册方法中的图像大小,并将其保存到字段数组,并在创建方法 –
中从数据数组访问它们。谢谢先生。这是迄今为止我得到的最好的方法。 –
遗憾它没有工作,它说未定义varialble $文件 –
只是更改为$文件名 – iCoders
它说串 –