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
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
– Valdeir Psr
True! I added the two classes at the end of the question!
– Carlos Rocha