Jump to content
Carlos Rocha

Imagem aparece no explorer mas não dá para visualizar

Recommended Posts

Carlos Rocha

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

 

Xyj1K.jpg


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;
        }
        
    }
    
    ?>

 

Edited by carcleo

Share this post


Link to post
Share on other sites
HappyHippyHippo

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

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.