大家好,我需要你们的帮助。我正在创建一个 laravel 项目,我修改了默认的用户表,以存储用户的更多信息,例如名称和用户图像文件名称即可。因此,我必须修改“ RegisterController ”类,其中“创建”功能已被修改,我还添加了“更新”方法存储上传的图像文件。下面是我的“ RegisterController ”类的代码:
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
的官方网站获得了存储代码的文件答案 0 :(得分:2)
在插入db
之前,您已将图像移动到文件夹 $destinationPath='images';
$filename = $data['img']->getClientOriginalName();
//move iamge to folder
$fileName = str_random(30).'.'.$data['img']->clientExtension();
$data['img']->move($destinationPath, $fileName);
移动的文件将在public / images文件夹中提供
答案 1 :(得分:1)
你可以去Illuminate \ Foundation \ Auth \ 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 \ Controllers \ Auth \ 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'],
]);
}
答案 2 :(得分:0)
$image = time().'.'.$data['img']->getClientOriginalExtension();
$ data [' img'] - > move(public_path(' images'),$ image);
在发送到db之前将图像存储在公共图像文件夹中的最佳方法。
答案 3 :(得分:0)
如果您使用的是laravel
表单,请使用
{!! Form::open(['url' => url('background'), `'files'=>true,` 'method' => 'post', 'class' => 'form-horizontal']) !!}
如果您使用的是简单的html表单,请使用以下代码
<form enctype="multipart/form-data"><form>
我希望它适合你。