BomLogo 0 Denunciar post Postado Agosto 3, 2019 Boa noite! Sou iniciante no PHP, estudo por conta própria e baixei um sistema de cadastro com foto. Ele cadastra, faz o upload do arquivo, verifica é ele é válido, mas no momento que cadastra, dá um erro que está na foto em anexo. Essa é a parte do código que é relatado na imagem: if(isset($_FILES['foto']) && $_FILES['foto']['size'] > 0): $extensoes_aceitas = array('bmp','png','svg','jpeg','jpg'); essa é a linha do erro ---> $extensao = strtolower(end(explode('.',$_FILES['foto']['name']))); // Validamos se a extensão do arquivo é aceita if (array_search($extensao, $extensoes_aceitas) === false): echo "<h1>Extensão Inválida!</h1>"; exit; endif; Podem me dar uma ajuda? Obrigado, Carlos www.bomlogo.com.br Compartilhar este post Link para o post Compartilhar em outros sites
Ak_Ray 0 Denunciar post Postado Agosto 3, 2019 Olá não posso te ajudar :( sou iniciante e estudo por conta própria também, gostaria de perguntar onde você encontrou este sistema de cadastro com foto para download? Estou a procura de aprender isso há muito tempo, mas não acho em local algum kkk e por incrível que pareça também estou lidando com um sistema de cadastro, porém, sem este mecanismo de fotos, e gostaria muito de implementá-lo no meu projeto. Se não for muito incomodo teria como me mandar o link? Compartilhar este post Link para o post Compartilhar em outros sites
BomLogo 0 Denunciar post Postado Agosto 3, 2019 encontrei a resposta aqui no fórum mesmo. Resposta do washalbano em: https://forum.imasters.com.br/topic/579367-erro-no-upload-de-images/ Olá! Essa mensagem aparece quando se aninha funções de arrays assim: $extensao = strtolower(end(explode('.', $_FILES['arquivo']['name']))); tente assim: $extensao = explode('.', $_FILES['arquivo']['name']); $extensao = strtolower(end($extensao)); Compartilhar este post Link para o post Compartilhar em outros sites
Jack Oliveira 1 Denunciar post Postado Agosto 3, 2019 3 horas atrás, BomLogo disse: Boa noite! Sou iniciante no PHP, estudo por conta própria e baixei um sistema de cadastro com foto. Ele cadastra, faz o upload do arquivo, verifica é ele é válido, mas no momento que cadastra, dá um erro que está na foto em anexo. Essa é a parte do código que é relatado na imagem: if(isset($_FILES['foto']) && $_FILES['foto']['size'] > 0): $extensoes_aceitas = array('bmp','png','svg','jpeg','jpg'); essa é a linha do erro ---> $extensao = strtolower(end(explode('.',$_FILES['foto']['name']))); // Validamos se a extensão do arquivo é aceita if (array_search($extensao, $extensoes_aceitas) === false): echo "<h1>Extensão Inválida!</h1>"; exit; endif; Podem me dar uma ajuda? Obrigado, Carlos www.bomlogo.com.br Tente fazer assim <?php class Upload{ private $arquivo; private $altura; private $largura; private $pasta; function __construct($arquivo, $altura, $largura, $pasta){ $this->arquivo = $arquivo; $this->altura = $altura; $this->largura = $largura; $this->pasta = $pasta; } private function getExtensao(){ //retorna a extensao da imagem return $extensao = strtolower(end(explode('.', $this->arquivo['name']))); } private function ehImagem($extensao){ $extensoes = array('gif', 'jpeg', 'jpg', 'png'); // extensoes permitidas if (in_array($extensao, $extensoes)) return true; } //largura, altura, tipo, localizacao da imagem original private function redimensionar($imgLarg, $imgAlt, $tipo, $img_localizacao){ //descobrir novo tamanho sem perder a proporcao if ( $imgLarg > $imgAlt ){ $novaLarg = $this->largura; $novaAlt = round( ($novaLarg / $imgLarg) * $imgAlt ); } elseif ( $imgAlt > $imgLarg ){ $novaAlt = $this->altura; $novaLarg = round( ($novaAlt / $imgAlt) * $imgLarg ); } else // altura == largura $novaAltura = $novaLargura = max($this->largura, $this->altura); //redimencionar a imagem //cria uma nova imagem com o novo tamanho $novaimagem = imagecreatetruecolor($novaLarg, $novaAlt); switch ($tipo){ case 1: // gif $origem = imagecreatefromgif($img_localizacao); imagecopyresampled($novaimagem, $origem, 0, 0, 0, 0, $novaLarg, $novaAlt, $imgLarg, $imgAlt); imagegif($novaimagem, $img_localizacao); break; case 2: // jpg $origem = imagecreatefromjpeg($img_localizacao); imagecopyresampled($novaimagem, $origem, 0, 0, 0, 0, $novaLarg, $novaAlt, $imgLarg, $imgAlt); imagejpeg($novaimagem, $img_localizacao); break; case 3: // png $origem = imagecreatefrompng($img_localizacao); imagecopyresampled($novaimagem, $origem, 0, 0, 0, 0, $novaLarg, $novaAlt, $imgLarg, $imgAlt); imagepng($novaimagem, $img_localizacao); break; } //destroi as imagens criadas imagedestroy($novaimagem); imagedestroy($origem); } public function salvar(){ $extensao = $this->getExtensao(); //gera um nome unico para a imagem em funcao do tempo $novo_nome = time() . '.' . $extensao; //localizacao do arquivo $destino = $this->pasta . $novo_nome; //move o arquivo if (! move_uploaded_file($this->arquivo['tmp_name'], $destino)){ if ($this->arquivo['error'] == 1) return "Tamanho excede o permitido"; else return "Erro " . $this->arquivo['error']; } if ($this->ehImagem($extensao)){ //pega a largura, altura, tipo e atributo da imagem list($largura, $altura, $tipo, $atributo) = getimagesize($destino); // testa se é preciso redimensionar a imagem if(($largura > $this->largura) || ($altura > $this->altura)) $this->redimensionar($largura, $altura, $tipo, $destino); } return "Sucesso"; } } if ((isset($_POST["submit"])) && (! empty($_FILES['foto']))){ $upload = new Upload($_FILES['foto'], 1000, 800, "fotos/"); echo $upload->salvar(); } ?> <html> <head> <body> <form method='post' enctype='multipart/form-data'><br> <input type='file' name='foto' value='Cadastrar foto'> <input type='submit' name='submit'> </form> </body> </head> </html> Compartilhar este post Link para o post Compartilhar em outros sites
Omar~ 87 Denunciar post Postado Agosto 3, 2019 A solução para o problema se encontra nesse post: imageUpload.php é uma classe para uploads de imagens minha. Compartilhar este post Link para o post Compartilhar em outros sites