Carlos Rocha Posted May 25, 2018 at 01:20 AM Report #610687 Posted May 25, 2018 at 01:20 AM Estou fazendo um upload de arquivos com html5, ajax e php. Tudo vai bem, a gravação no banco é feita, o upload é feito, mas a imagem, quando vê ela no windows explorer, ainda que ela esteja lá, mas não dá para visualiza-la. O nome está correto, está com a extensão. Está parecendo uma falha do uploader. O que pode ser feito? Segue o código: FORM <div class="plano"> <h1 class="titulos">Cadastro de Plano</h1> <form method="post" class="planoCadastrar" method="post" enctype="multipart/form-data"> <input type="text" name="nomePlano" id="nomePlano" class="typeTextMedio" placeholder="Nome" required /><br /><br /> <textarea placeholder="Descrição" class="textarea" name="descricao" id="descricao" cols="93" rows="15" required></textarea><br /> <br /> <div id="multiple_upload"> <input type="hidden" id="arquivos" name="arquivos" /> <input type="file" multiple id="fotos" name="fotos[]" accept=".jpg, .png, image/jpg, image/png" /> <div id="message">Selecionar fotos</div> <div id="lista"></div> </div> <img class="spinner" src="../_img/_bannerImgs/spinner.gif" /> <input type="submit" class="btnAcesso" value="Enviar" /> <label class="resposta"></label> </form><br /><br /> <script> $('.elevate-image').ezPlus({ zoomType: 'inner', cursor: 'crosshair' }); </script> </div> JQuery // JavaScript Document $(document).ready(function(e) { $("div.conteudo div.plano form.planoEditar").on("submit", function() { var idPlano = $("div.conteudo div.plano form.planoEditar input[type=hidden]#idPlano").val(); var nomePlano = $("div.conteudo div.plano form.planoEditar input[type=text]#nomePlano").val(); var descricao = $("div.conteudo div.plano form.planoEditar textarea#descricao").val(); if ( nomePlano == "" || idPlano == "" || descricao == "") { alert("Algum campo está vazio!"); return false; } $("div.conteudo div.plano form.planoEditar input[type=submit].btnAcesso").css('display', 'none'); $("div.conteudo div.plano.planoEditar form img").css('display', 'block'); $("div.conteudo div.plano form input[type=submit].btnAcesso").css('display', 'none'); $("div.conteudo div.plano form img").css('display', 'block'); var formData = new FormData(this); $.ajax({ url: "../_requeridos/editaPlano.php", type: 'POST', data: formData, beforeSend: function() { }, success: function (retorno) { $("div.conteudo div.plano form.planoEditar input[type=submit].btnAcesso").css('display', 'block'); $("div.conteudo div.plano.planoEditar form img").css('display', 'none'); if (retorno == 1) { resposta = "Plano cadastrado com sucesso!"; } else { resposta = "Erro no cadastro do Plano"; } $(".resposta").css("display", "block"); $(".resposta").html(resposta); }, cache: false, contentType: false, processData: false }); return false; }); }); php <?php require_once "../_controles/_conexao/Conexao.php"; require_once "../_controles/_util/PhpUtil.php"; require_once "../_controles/_util/Constantes.php"; require_once "../_controles/_models/Planos.php"; require_once "../_controles/_models/Fotos.php"; require_once "../_controles/_models/Upload.php"; require_once "../_controles/_daos/PlanosDao.php"; require_once "../_controles/_daos/FotosDao.php"; require_once "../_controles/_daos/UploadDao.php"; $connection = new Conexao(); $conexao = $connection->abreConexao(); $phpUtil = new PhpUtil(); $constantes = new Constantes(); $planosDao = new PlanosDao($conexao); $fotosDao = new FotosDao($conexao); $nomePlano = $_POST["nomePlano"]; $descricao = $_POST["descricao"]; $plano = new Planos( $nomePlano, $descricao); $cadastro = $planosDao->cadastrar($plano); $ultimoId = $planosDao->ultimoIdCadastrado(); require_once "upload.php"; echo $cadastro ? 1 : 2; ?> upload.php <?php ///////////////////////////UPLOAD DAS FOTOS//////////////////////////////////// $arquivos1 = explode ("|", $_POST["arquivos"]); $arquivos2 = $_FILES["fotos"]; $arquivos = $fotosDao->arrayFotos($arquivos1, $arquivos2); if(sizeof($arquivos)) { foreach($arquivos as $fotografia) { $upload = new Upload($fotografia, "../_img/_fotos"); $uploadDao = new UploadDao($upload); // tamanho de erro 5MB = 5 1024 1024 = 5242880 $erro = $uploadDao->erro(5242880); if($erro[0] == 0) { $envio = $uploadDao->uploadFile(); if($envio[0]==0) ; $nomeImagem = $upload->getNomeBanco(); } else { $phpUtil->erro($erro[1]); } $fotosDao->cadastrar ($ultimoId, $upload->getNomeBanco()); } } ////////////////////////////UPLOAD DAS FOTOS//////////////////////////////////// ?> Veja como está no Windows Explorer UploadDao.php <?php class UploadDao { private $arquivo; public function __construct($_upload) { $this->arquivo = $_upload; } /* Erros do arquivo; erro ($_tamanho) Onde $_tamanho é em bits, ou seja, 5MB - 5 * 1024 * 1024= */ public function erro ($_tamanho) { $mensagem = "Sem erros!"; $erro = 0; if(isset($this->arquivo)) { if ( $this->arquivo->getExtensao() != "JPG" && $this->arquivo->getExtensao() != "jpg" && $this->arquivo->getExtensao() != "JPEG" && $this->arquivo->getExtensao() != "jpeg" && $this->arquivo->getExtensao() != "PNG" && $this->arquivo->getExtensao() != "png" ) { $mensagem = "Imagem precisa ser nos formatos: jpg, JPG, jpeg, JPEG, png, PNG"; $erro = 1; } else if ($this->arquivo->getTamanho() >= $_tamanho ) { $mensagem = "Tamanho máximo da Imagem é de ".($_tamanho/(1024*1024))." MB"; $erro = 2; } } return array($erro, $mensagem, $this->arquivo->getTamanho()/(1024*1024)); } public function uploadFile() { $erro = 0; $mensagem = "Sucesso"; try { $urlEnvio = $this->arquivo->getEndereco()."/".$this->arquivo->getNomeBanco(); move_uploaded_file($this->arquivo->getNomeTemporario(), $urlEnvio); } catch (Exception $e) { $erro = 1; $mensagem = "falha no envio"; } return array($erro, $mensagem); } private function geraMiniatura ($_largura, $_url) { //CRIA UMA NOVA IMAGEM if( $this->arquivo->getExtensao() == "JPG" || $this->arquivo->getExtensao() == "jpg" ) { $imagem_orig = ImageCreateFromJPEG($this->arquivo->getNomeTemporario()); } else if( $this->arquivo->getExtensao() == "JPEG" || $this->arquivo->getExtensao() == "jpeg") { $imagem_orig = ImageCreateFromJPEG($this->arquivo->getNomeTemporario()); } else if( $this->arquivo->getExtensao() == "PNG" || $this->arquivo->getExtensao() == "png") { $imagem_orig = ImageCreateFromPNG($this->arquivo->getNomeTemporario()); } //LARGURA $pontoX = ImagesX($imagem_orig); //ALTURA $pontoY = ImagesY($imagem_orig); //DEFINE OS PARÂMETROS DA MINIATURA $largura = $_largura; $altura = ($pontoY * $largura) / $pontoX; //CRIA O THUMBNAIL $imagem_fin = ImageCreateTrueColor($largura, $altura); //COPIA A IMAGEM ORIGINAL PARA DENTRO ImageCopyResampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY); //SALVA A IMAGEM ImageJPEG($imagem_fin, $_url,100); //LIBERA A MEMÓRIA ImageDestroy($imagem_orig); ImageDestroy($imagem_fin); } } ?> Upload.php <?php class Upload { private $nome; private $nomeBanco; private $nomeTemporario; private $largura; private $altura; private $tamanho; private $endereco; private $extensao; public function __construct ($_file, $_url) { $dimensoes = getimagesize($_file["tmp_name"]); $this->extensao = pathinfo($_file["name"], PATHINFO_EXTENSION); $this->nome = $_file["name"]; $this->nomeBanco = $this->setNomeBanco(); $this->nomeTemporario = $_file["tmp_name"]; $this->largura = $dimensoes[0]; $this->altura = $dimensoes[1]; $this->tamanho = $_file["size"]; $this->endereco = $_url; } public function setNomeBanco () { return md5(uniqid(time())).".". $this->extensao; } public function getNome() { return $this->nome; } public function getNomeBanco() { return $this->nomeBanco; } public function getNomeTemporario() { return $this->nomeTemporario; } public function getLargura() { return $this->largura; } public function getAltura() { return $this->altura; } public function getTamanho() { return $this->tamanho; } public function getEndereco() { return $this->endereco; } public function getExtensao() { return $this->extensao; } } ?>
HappyHippyHippo Posted May 25, 2018 at 03:34 PM Report #610691 Posted May 25, 2018 at 03:34 PM Tens o código demasiado convoluto para poder analisar isso no telemóvel e quem sabe mesmo no computador O que raio é um uploadDao? Upload e tipo de dado? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now