图像文件未存储在laravel项目

时间:2017-09-14 03:01:03

标签: php database image laravel

大家好,我需要你们的帮助。我正在创建一个 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

的官方网站获得了存储代码的文件

4 个答案:

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

我希望它适合你。