Laravel: Store persite com path temporário | Fórum | School of Net

Deseja poder participar de nosso fórum e tirar todas as suas dúvidas?
Clique aqui e assine nosso plano de acesso ilimitado. Saiba mais.

por Gustavo

3 semanas, 3 dias atrás Gustavo

Laravel: Store persite com path temporário

Pessoal, estou tendo um problema com o Observer pra salvar o avatar do usuário no banco. Me baseei no projeto de Forum do Laravel, mas está salvando o caminho temporário do arquivo e não como "avatars/nomedoarquivo.jpg". ``` <?php namespace App\Observers; use App\Models\User; use Exception; use Illuminate\Http\UploadedFile; use Illuminate\Support\Facades\Storage; class AvatarUserObserver { /** * Handle the user "created" event. * * @param \App\User $user * @return void */ public function upload(User $user) { $extension = $user->avatar->extension(); $allowed_extensions = [ 'png', 'jpg', 'jpeg' ]; if(!in_array($extension, $allowed_extensions)){ throw new Exception('Extensão ' . $extension . ' não permitida!'); } $name = bin2hex(openssl_random_pseudo_bytes(8)); $name = $name . '.' . $extension; $name = 'avatars/' . $name; $user->avatar->storeAs('', $name); $user->avatar = $name; } public function created(User $user) { if(is_a($user->avatar, UploadedFile::class) and $user->avatar->isValid()){ $this->upload($user); } } /** * Handle the user "updated" event. * * @param \App\User $user * @return void */ public function updated(User $user) { if(is_a($user->avatar, UploadedFile::class) and $user->avatar->isValid()){ $previous_avatar = $user->getOriginal('avatar'); $this->upload($user); Storage::delete($previous_avatar); } } /** * Handle the user "deleted" event. * * @param \App\User $user * @return void */ public function deleted(User $user) { Storage::delete($user->avatar); } /** * Handle the user "restored" event. * * @param \App\User $user * @return void */ public function restored(User $user) { // } /** * Handle the user "force deleted" event. * * @param \App\User $user * @return void */ public function forceDeleted(User $user) { // } } ```

26 Respostas