brediweb/imagemupload is a Laravel package for pacote de upload de imagens para laravel.
It currently has 0 GitHub stars and 1.404 downloads on Packagist (latest version 1.0.1).
Install it with composer require brediweb/imagemupload.
Discover more Laravel packages by brediweb
or browse all Laravel packages to compare alternatives.
Last updated
Sua contribuição ajuda na manutenção do pacote e criação de muitos outros. Faça de coração ♥
Faça upload de imagens ainda mais facilmente no Laravel
Este pacote facilita o upload de imagens e renderização delas sem você precisar criar pastas e link simbólico. Envie imagens e redimensione em diversos tamanhos para seu site.
O que ele fará por você:
requer Laravel >= 5.5 e PHP 7.1:
composer require brediweb/imagemupload
Não é bom carregar uma imagem de 1200x1200 pixels para exibir em uma miniatura de 100x100 pixels, por exemplo. A melhor opção seria ter a imagem em vários tamanhos diferentes. Exemplo:
Você pode ter imagens em quantos tamanhos desejar.
Passo #1 em seu formulário html:
<!--Para enviar apenas uma imagem-->
<input type="file" name="user" />
Passo #2 em seu Controller coloque as configurações:
use Brediweb\ImagemUpload\ImagemUpload;
public function __construct()
{
$this->user = [
'input_file' => 'user', //nome do input
'destino' => 'users/', //Pasta que será criada automáticamente dentro de storage/app/public/
'resolucao' => ['p' => ['h' => 200, 'w' => 200], 'm' => ['h' => 400, 'w' => 400], ...] //Não há limites de quantos tamanhos podem ser configuradas.
];
}
public function store(Request $request)
{
$input = $request->all();
$imagens = ImagemUpload::salva($this->user);
//retorno: image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg
if ($imagens) {
// a função retorna o novo nome da imagem. guarde em seu banco de dados.
$input['imagem'] = $imagens;
}
}
O pacote vai criar as pastas p e m dentro de users/
storage/app/public/users/p/image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg imagem 200X200
storage/app/public/users/m/image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg imagem 400x400
Passo #3 renderizando a imagem:
<img src="{{ route('imagem.render', 'users/p/' . $user->imagem) }}" />
OBS: use a rota 'imagem.render' para renderizar as imagens, seguindo com o nome da pasta (users) e tamanho (pasta p, m, etc.).
em seu Controller:
public function destroy($id)
{
$user = User::find($id);
$imagem = $user->imagem;
$this->user['imagem'] = $imagem; // acrescente ao array o indice "imagem", e como valor, o nome da imagem.
$user->delete();
if (!empty($imagem)) {
ImagemUpload::deleta($this->user); // $this->user é o array com todas as configurações de envio de imagens.
}
return redirect()->route('users.list')->with('msg', 'registro excluido com sucesso!');
}
OBS: $this->user, é o seu array com as configurações de envio de suas imagens. A função deleta() irá apagar do disco todas as imagens em suas respectivas pastas.
Caso queira enviar várias imagens, é muito simples: Passo #1 em seu formulário html:
<input type="file" name="galeria[]" multiple />
Passo #2 em seu Controller coloque as configurações:
use Brediweb\ImagemUpload\ImagemUpload;
public function __construct()
{
$this->galeria = [
'input_file' => 'galeria', //nome do input
'destino' => 'galeria/',
'resolucao' => ['p' => ['h' => 200, 'w' => 200], 'm' => ['h' => 400, 'w' => 400], ...]
];
}
public function store(Request $request)
{
$input = $request->all();
$imagens = ImagemUpload::salva($this->galeria);
/*
$imagens retorna:
array (
image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg,
image-example_3fc5ac232a6e60a10ca20a90350954a9.jpg
)
*/
if ($imagens) {
// guarde o nome das imagens em seu banco de dados
$input['imagens'] = $imagens;
}
}
OBS: Ao enviar várias imagens, você recebe um array com o novo nome das imagens.
$this->user = [
'input_file' => 'user',
'destino' => 'users/'
];
$this->user = [
'input_file' => 'user',
'destino' => 'users/',
'resolucao' => ['p' => ['h' => 200, 'w' => 200], 'm' => ['h' => 400, 'w' => 400], 'pasta_original']
// Apenas coloque o nome do indice que será o nome da pasta com as imagens originais.
];
Mais informações serão acrescentadas à este documento. Qualquer dúvida, entre em contato.