uploaded_file (MUCRM\engine\support\uploaded_file)
O objeto uploaded_file é retornado pelo método request()->file('key'). Ele encapsula o arquivo enviado via formulário e fornece métodos fluídos para validação, leitura de informações, manipulação de imagem, armazenamento, conversão WebP e upload seguro.
Obtendo Arquivos
Via Request
Ideal dentro de controllers.
$file = request()->file('image');Via Classe Estática
Ideal para services, helpers e classes externas.
use MUCRM\engine\support\uploaded_file;
$file = uploaded_file::file('image');Verificando Existência
request()->has_file('banner');ou
uploaded_file::has('banner');Métodos Disponíveis
get_client_original_name()
Retorna o nome original do arquivo enviado pelo usuário.
$name = request()->file('image')->get_client_original_name();get_client_original_extension()
Retorna a extensão em minúsculo.
$ext = request()->file('image')->get_client_original_extension();get_mime_type_original()
Retorna o MIME Type real do arquivo.
$mime = request()->file('image')->get_mime_type_original();get_real_path()
Retorna o caminho exato do upload do temp_name.
$path = request()->file('image')->get_real_path();is_valid_size(int $maxMb)
Valida o tamanho máximo do arquivo em MB.
if (!$file->is_valid_size(2)) {
return res()->error('Arquivo deve ter no máximo 2MB')->back();
}is_valid_mime(array $allowed)
Valida o tipo MIME permitido.
$allowed = [
'image/jpeg',
'image/png',
'application/pdf'
];
if (!$file->is_valid_mime($allowed)) {
return res()->error('Formato não permitido')->back();
}Métodos de Armazenamento
store(string $path, string $name, array $allowedExts = [...])
Salva o arquivo original mantendo formato. Por padrão aceita apenas: jpg, jpeg, png, gif, webp. Você pode passar extensões extras no terceiro parâmetro.
$file->store('uploads/sliders', 'banner.gif');Com extensões customizadas:
$file->store('uploads/docs', 'manual.pdf', ['pdf', 'docx', 'txt']);store_as_webp
Redimensiona, converte para WebP e salva. Ideal para sliders, notícias, avatares, galerias e imagens do site.
$file->store_as_webp(
'uploads/sliders',
'banner_01.webp',
1920,
1080,
85
);store_as_guild_mark_bmp v3
Salva a marca da guild no formato esperado pelo cliente (BMP Wyd). Use o ID da guild já validado no banco do usuário logado.
use MUCRM\engine\support\uploaded_file;
$file = uploaded_file::resolve('logo');
$guildId = 12;
if ($file && $file->store_as_guild_mark_bmp('guilds', $guildId)) {
// Sucesso — responda para a View ou JSON
}uploaded_file::resolve('logo') obtém o arquivo do campo logo do request. Valide permissão da guild antes de salvar.Exemplo Completo no Controller
public function store()
{
$file = request()->file('banner');
if ($file) {
if (
$file->is_valid_size(5) &&
$file->is_valid_mime([
'image/jpeg',
'image/png'
])
) {
$newName = md5(time() . $file->get_client_original_name()) . '.webp';
$file->store_as_webp(
'uploads/banners',
$newName,
1200,
400
);
Slider::create([
'path' => $newName
]);
}
}
return res()->error('Processado!')->back();
}Exemplo Inteligente (GIF mantém original)
$file = request()->file('slider');
$newName = md5(time());
if ($file->get_mime_type_original() === 'image/gif') {
$fileName = $newName . '.gif';
$file->store('uploads/sliders', $fileName);
} else {
$fileName = $newName . '.webp';
$file->store_as_webp(
'uploads/sliders',
$fileName,
1920,
1080
);
}Uso com Nullsafe Operator (PHP 8+)
Se o arquivo não existir, file() retorna null.
request()->file('avatar')?->store_as_webp(
'uploads/avatar',
'user.webp',
300,
300
);Boas práticas
- Sempre valide tamanho e MIME.
- Use WebP para performance máxima.
- Preserve GIF animado no formato original.
- Gere nomes únicos com
md5(),uniqid()ou UUID. - Nunca confie apenas na extensão do arquivo.
- Organize uploads por pasta.
Resumo Rápido
$file = request()->file('image');
$file->get_client_original_name();
$file->get_client_original_extension();
$file->get_mime_type_original();
$file->is_valid_size(5);
$file->is_valid_mime(['image/png']);
$file->store('uploads', 'file.zip');
$file->store_as_webp(
'uploads',
'image.webp',
800,
600,
85
);