[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
José Carlos dos Santos
Criador José Carlos dos Santos 30/07/2024

Olá Carlos, tudo bem?

Queria saber como fazer para fazer o upload usando o petter DTO?

Manager Carlos Ferreira 30/07/2024

Olá, José!

Tudo bem?

 

Vc pode fazer é abstrair, e pegar o array puro com os detalhes do arquivo de upload, igual neste caso:

https://github.com/devfullcycle/FC3-admin-catalogo-de-videos-php/blob/main/app/Http/Controllers/Api/VideoController.php#L59

 

Mas, particularmente não sou tão purista assim, prefiro definir um UploadedFile file e passo para o DTO, um exemplo real:

<?php

 

namespace App\DTO\Users;

 

use Illuminate\Http\UploadedFile;

 

readonly class ChangePhotoUser

{

    public function __construct(

        public string $id,

        public UploadedFile $photo,

    ) {

    }

}

Carlos Ferreira
Criador José Carlos dos Santos 30/07/2024

Eu fiz assim:

public static function makeFromRequest(AdminRequest $request): self

    {

        $password = Hash::make($request->password);

        if(!empty($request->file('image') && $request->image->isValid())){

            $data = $request->file('image')->storeAs("admins", Str::slug($request->name)  . '-' . str_replace('.', '', microtime(true)) . '.' . $request->file('image')->extension());

        }

        return new self(

            $request->name,

            $request->email,

            $request->password = $password,

            $request->imgae = $data

        );

    }

O que você me diz?

José Carlos dos Santos
Manager Carlos Ferreira 30/07/2024

A desvantagem é que a lógica de upload ficou dentro do DTO, ele na realidade precisa ser uma classe burra, que apenas carrega as informações de um lado para o outro.

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!