Сохранение изображений с Laravel - PullRequest
0 голосов
/ 18 июня 2020

По какой-то причине это не позволяет мне загрузить изображение из моей формы, и я не понимаю, почему это происходит, где моя ошибка?

<div class="row">
{!! Form::model($user, [
    'route' => $user->exists ? ['admin.users.update', $user->id] : 'admin.users.store',   
    'files' => true, 
    'enctype' => 'multipart/form-data',   
    'method' => $user->exists ? 'PUT' : 'POST'
]) !!}

 <div class="col-md-4">
        <div class="box box-primary">
            <div class="box-header with-border">
                <h3 class="box-title">Perfil</h3>                
            </div>
            <div class="box-body">                   
                <img width="300px" class="profile-user-img img-responsive img-circle" 
                    src="{{ Storage::url($user->user_photo)}}"                  
                    alt="{{ $user->name}}">
                    &nbsp;
                    &nbsp;
                <div class="form-group">              
                {!! Form::label('user_photo', 'Imagen de Perfil') !!}                    
                {!! Form::file('user_photo') !!}
                </div>
            </div>
        </div>       
    </div> 
{!! Form::close() !!}    
</div>

вот как я пытаюсь сохранить информацию введено с моего контроллера

<?php

namespace App\Http\Controllers;

use App\User;
use App\Statu;
use DataTables;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Providers\UserWasCreated;
use Illuminate\Support\Facades\DB;
use App\Http\Requests\SaveUserRequest;
use Illuminate\Support\Facades\Storage;

class UserController extends Controller
{

    public function store(SaveUserRequest $request)
    {
        if ($request->ajax()){
            try {
                //  Transacciones
                DB::beginTransaction();

                // Creamos el usuario            
                $user = new User;   
                $user->name         = $request->get('name');
                $user->surname      = $request->get('surname');
                $user->nickname     = $request->get('nickname');
                $user->email        = $request->get('email');        
                $user->password     = $request->get('password');
                $user->gender       = $request->get('gender');  
                $user->address      = $request->get('address');
                $user->postcode     = $request->get('postcode');  
                $user->city         = $request->get('city');
                $user->province     = $request->get('province');  
                $user->phone        = $request->get('phone');
                $user->birthdate    = Carbon::parse($request->get('birthdate'));                      
                $user->status_id    = $request->get('status_id');            


                if ($request->hasFile('user_photo'))
                {
                    $user->user_photo = $request->file('user_photo')->store('public');
                }
                $user->save();

                // Enviamos el email
                // UserWasCreated::dispatch($user, $data['password']);
                //$user->update($request->validated()); 

                DB::commit();

            } catch (Exception $e) {
                // anula la transacion
                DB::rollBack();
            }
        }    
    }
}

Перед сохранением я провожу проверку с помощью dd ($ user);

 if ($request->hasFile('user_photo'))
                {
                    $user->user_photo = $request->file('user_photo')->store('public');
                }
                dd($user); 
                $user->save();

проверяю Я вижу, что поле user_photo существует внутри

#fillable: array: 14 [
    13 => "user_photo"
  ]

, но не в пределах

#attributes: array: 13

Результат всей проверки:

App\User {#1747
  #fillable: array:14 [
    0 => "status_id"
    1 => "surname"
    2 => "nickname"
    3 => "email"
    4 => "email_verified_at"
    5 => "password"
    6 => "gender"
    7 => "birthdate"
    8 => "province"
    9 => "city"
    10 => "address"
    11 => "postcode"
    12 => "phone"
    13 => "user_photo"
  ]
  #dates: array:1 [
    0 => "birthdate"
  ]
  #hidden: array:2 [
    0 => "password"
    1 => "remember_token"
  ]
  #casts: array:1 [
    "email_verified_at" => "datetime"
  ]
  #connection: null
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: false
  +wasRecentlyCreated: false
  #attributes: array:13 [
    "name" => "Rodrigo"
    "surname" => "Ruiz"
    "nickname" => "rjr"
    "email" => "rjruizsf@gmail.com"
    "password" => "$2y$10$mZw/n4LpvK58bE3ghXx.NuabyduUhsA6FDmFBWVdjRBDaTVPJAaTO"
    "gender" => "Masculino"
    "address" => null
    "postcode" => null
    "city" => null
    "province" => "North Carolina"
    "phone" => "3434434"
    "birthdate" => "2020-06-17 00:00:00"
    "status_id" => "1"
  ]

Что я делаю не так ?. Пожалуйста, помогите мне с решением

1 Ответ

0 голосов
/ 18 июня 2020

Синтаксис: store ('subfolder', 'fileSystem');

место хранения загруженного файла - это первый параметр в функции store (), попробуйте следующий

    if( $request->hasFile( $fieldName ) ) {
        $file = $request->file($fieldName);
        $fileloc = $file->store('profile_pic', 'public');
    }

файл хранится в хранилище / app / public / profile_pic / user1.jpg вот так

...