image appears in explorer but can not view

Asked

Viewed 44 times

1

I’m uploading files with Html5, ajax and php.

Everything goes well, the recording in the bank is done, the upload is done, but the image, when you see it in windows explorer, even if it is there, but you can not view it.

The name is correct, it’s with the extension.

It’s looking like a glitch Uploader.

What can be done?

Follows the code:

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////////////////////////////////////    
?>

See how it’s in the Windows Explorer inserir a descrição da imagem aqui

In time:

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

}

?>
  • The most important part of the question was missing: which code is responsible for upload? Try this way, too: https://answall.com/a/288272/99718

  • True! I added the two classes at the end of the question!

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.