未存储在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文件夹

+0

遗憾它没有工作,它说未定义varialble $文件 –

+0

只是更改为$文件名 – iCoders

+0

它说串 –

$image = time().'.'.$data['img']->getClientOriginalExtension(); 

$ data ['img'] - > move(public_path('images'),$ image);

在发送到数据库之前将图像存储在公共图像文件夹中的最佳方式。

+0

谢谢曼它工作。 !!你摇滚! –

如果您正在使用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'], 
    ]); 
} 
+0

此解决方案是否将图像保存在数据库和服务器公用文件夹中。因为我想保存图像,只能在公共文件夹中为上传的图像指定一个唯一的名称。而在数据库中,我只想保存图像名称和大小而不是图像本身。 –

+0

这个大小保存数据库中的图像路径,您可以检测注册方法中的图像大小,并将其保存到字段数组,并在创建方法 –

+0

中从数据数组访问它们。谢谢先生。这是迄今为止我得到的最好的方法。 –