DTO e uplaod de imagens
Olá Carlos, tudo bem?
Queria saber como fazer para fazer o upload usando o petter DTO?
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,
) {
}
}
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?
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.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!