LazyPHP

Tutoriais

Voltar para o índice do fórum

Ver outros tópicos de 'Tutoriais'

[Imagem] Upload de imagem com o LazyPHP
Healfull

4 anos atrás atrás - 25/11/2014

Segue um tutorial simples de como fazer upload de imagem com o LazyPHP, por favor, abstraiam os nomes dos Controladores e Métodos usados, sitam-se a vontade para mudar livremente. Primeiro criei um controlador para gerenciar essa parte, e por enquanto apenas essa, com um método para renderizar um view e o post da mesma.
<?php
class ImagemController extends AppController {
    public function add() {
        $this->setTitle("Upload de imagem");
    }
    public function post_add() {
        
        #salva imagem
        if (!empty($_FILES['avatar']["name"])) {
            try {
                $imagem = $_FILES['avatar'];
                $iu = new ImageUploader($imagem, 150);
                $iu->save(uniqid(), 'avatar');  // vai salvar em /uploads/avatar
                new Msg("Upload realizado com sucesso!", 1);
            } catch (Exception $e) {
                new Msg($e->getMessage(), 3);
            }
        }
    }
}
A view esta super simples, aqui o importante é usar o atributo
 enctype="multipart/form-data"
no seu <form>.
<form method="post" role="form" enctype="multipart/form-data">    
    <input type="hidden" value="qualquer" name="teste">
    <div class="form-group">
        <label for="avatar">Avatar</label>
        <input type="file" name="avatar" id="avatar" class="form-control" value="">
    </div>
    <div class="text-right">
        <input type="submit" class="btn btn-primary" value="salvar">
    </div>
</form>
Obs.: Por algum motivo obscuro da humanidade tive de colocar aquele hidden no inicio, pois senão os dados nunca eram submetidos para o método post_add() :/ Segue imagem ilustrando os passos:
Miguel

4 anos atrás atrás - 26/11/2014

Observação 1:
 $iu = new ImageUploader($imagem, 150);
o número 150 se refere ao redimensionamento da imagem. Ou sej,a ela possuirá 150px de largura ao ser enviada. Observação 2: Não é necessário o input type hidden. Basta por um atributo name no botão quando não tiver qualquer outro campo a ser enviado via post.
<input name="botao" type="submit" class="btn btn-primary" value="salvar">
* conteúdo editado as 12:59 em 30/11/2014
Rotieh

4 anos atrás atrás - 27/11/2014

Não vamos esquecer de fazer um tratamento para aceitar apenas arquivos seguros, com extensões (quase sempre) confiáveis, como a .img e .png... Abrir uma porta para upload sem criar restrições é um perigo ;)
Rotieh

4 anos atrás atrás - 27/11/2014

Rotieh disse: Não vamos esquecer de fazer um tratamento para aceitar apenas arquivos seguros, com extensões (quase sempre) confiáveis, como a .img e .png... Abrir uma porta para upload sem criar restrições é um perigo ;)
Eu quis dizer .jpg no lugar do .img (Fórum até o presente sem método de edição de postagem)
Healfull

4 anos atrás atrás - 27/11/2014

Eu estava fazendo uma validadorzinho maroto aqui para postar quando tive a curiosidade de ver o construtor da ImageUpload e lá já é feito um tratamento para permitir só imagens. Esse Miguel deveria ser professor! Nesse caso especifico já ta tranquilo, mas o que o Rotieh disse tem fundamento, se for implementar qualquer tipo de upload de arquivo sempre trate os tipos a serem aceitos, pois senão...

Voltar para o índice do fórum

Ver outros tópicos de 'Tutoriais'