Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jadsonlucena

Utilizar o ['tmp_name'] para exibir as imagens antes de fazer

Recommended Posts

Gostaria de pré visualizar as imagens antes de efetivar o upload!!!

 

isto é possível??

 

Tentei desta forma:

<form action="" method="post" enctype="multipart/form-data">
	<input name="uploads[]" type="file" multiple="multiple">
	<input type="submit" value="Upload!">
</form>

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$imagem = $_FILES['uploads'];
	for ($i = 0;$i < count($imagem['name']);$i++) {
		echo "<img src='".$imagem['tmp_name'][$i]."' />";
	}
}
?>

O código é gerado mas nada é visualizado...

 

Grato pela ajuda!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A menos que a sua pasta temporária fique dentro da área pública do servidor, isto não vai funcionar da maneira que você está idealizando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aproveitando que o meu problema é +/- parecido com o do colega, pergunto: estou implementando o código abaixo e gostaria de saber por que o mesmo hora envia imagens e hora não. Dei um print_r quando não envia e aparece o seguinte resultado:
Array ( [name] => Paisagem na região rural de Antônio Dias (1).JPG [type] => [tmp_name] => [error] => 1 => 0 )

 

====================================================================================================

 

<?php
if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
$titulo = strip_tags(filter_input(INPUT_POST, 'titulo'));
$imagem = $_FILES['imagem'];


if($titulo == ''){
echo '<div class="no">Informe o titulo para a galeria!</div>';
}elseif($imagem['error'] == '4'){
echo '<div class="no">Informe uma imagem de capa para sua galeria!</div>';

}else{
include_once "crop.php";
$nova_imagem = md5(uniqid(rand(), true)).'.jpg';
if($imagem['tmp_name'] == ''){
echo '<div class="no">Essa imagem não pode ser enviada!</div>';
}elseif(end(explode('.', $imagem['name'])) != 'jpg') {
echo '<div class="no">Envie apenas imagens com as extensões jpg, jpeg, JPG ou JPEG!</div>';
}else{
if(crop('galerias', $imagem['tmp_name'], '200', '200', $nova_imagem)){

$cadastrar_galeria = $pdo->prepare("INSERT INTO `galerias` SET titulo = ?, capa = ?, data = NOW(), status = 0");
$dados = array($titulo, $nova_imagem);

if($cadastrar_galeria->execute($dados)){
echo '<script>alert("Sua galeria foi cadastrada!");location.href="cadastrar.php"</script>';
}
}
}
}
}
?>

 

Outra questão é que o crop da imagem faz um corte centralizado. Exemplo: a foto de um pássaro, no corte passa a exibir a capa da galeria apenas com o peito da ave. Ao invés de cortar a imagem, preciso que o sistema gere thumbnails que mostre a imagem por completo.

Grato.



Pessoal, encontrei o erro mas não sei como resolver. O problema está nas linhas Array ( [name] => Paisagem na região rural de Antônio Dias (1).JPG [type] => [tmp_name] => [error] => 1 => 0 ) e }elseif(end(explode('.', $imagem['name'])) != 'jpg'). Se a imagem for JPG o sistema acusa o erro pois estou verificando imagens jpg. Como faço para o sistema diferenciar jpg, JPG, jpeg e JPEG?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ESerra, alterei o php.ini no trecho abaixo, mas continua não enviando. Vou continuar testando para ver.
Maximum allowed size for uploaded files.
http://php.net/upload-max-filesize
upload_max_filesize = 8M

 

Depois que reiniciei o EasyPHP, funcionou! Não há mais o erro de tamanho. Mas quando tento enviar imagens com a extensão JPG não funciona. Só funciona se a extensão estiver em minúscula. Preciso corrigir o trecho do código que disse no post anterior.

Grato ESerra!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É possível fazer um preview das fotos antes do upload, mas usando JQuery, segue um exemplo:

 

 

 
<form method="POST" action="<?php echo $_SERVER['REQUEST_URI'];?>" enctype="multipart/form-data">
<span>
<label>Foto:</label>
<input type="file" name="fotos[]" multiple="multiple" accept="image/x-png, image/gif, image/jpeg" id="fotos_file"/>
</span>
<br/>
<div style="display:none;width:100%;height:200px;min-height:200px !important;height:auto;" id="prev_file"></div>
 
<input type="submit"/>
</form>

 

 

Depois segue o código Javascript, ele está com limite de até 06 fotos

 

 

<script type="text/javascript">
$('#fotos_file').change(function(){
$('#prev_file').css({'display':'block'});
$('#prev_file').empty();
 
//limite de fotos
if(this.files.length<=6){
for(i=0; i<this.files.length; i++){
//coloque uma imagem tipo preloader na mesma pasta do arquivo
$('<img/>').attr({'src':'loading.gif','class':'loader','style':'width:90px;height:75px;float:left;'}).appendTo('#prev_file');
var reader = new FileReader();
reader.onload = function(e){
$('img.loader').delay(3000).remove();
$('<img/>').attr({'src':e.target.result,'alt':'Preview','style':'width:90px;height:75px;float:left;margin:05px;','title':'Preview'}).appendTo($('#prev_file'));
};
reader.readAsDataURL(this.files[i]);
}}else{
alert('Permitido somente 06 fotos');
return false;
}});
</script>

 

 

Não esquecendo de linkar o jquery dentro das tags head da página

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aproveitando que o meu problema é +/- parecido com o do colega, pergunto: estou implementando o código abaixo e gostaria de saber por que o mesmo hora envia imagens e hora não. Dei um print_r quando não envia e aparece o seguinte resultado:

Array ( [name] => Paisagem na região rural de Antônio Dias (1).JPG [type] => [tmp_name] => [error] => 1 => 0 )

 

====================================================================================================

 

<?php

if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){

$titulo = strip_tags(filter_input(INPUT_POST, 'titulo'));

$imagem = $_FILES['imagem'];

 

 

if($titulo == ''){

echo '<div class="no">Informe o titulo para a galeria!</div>';

}elseif($imagem['error'] == '4'){

echo '<div class="no">Informe uma imagem de capa para sua galeria!</div>';

 

}else{

include_once "crop.php";

$nova_imagem = md5(uniqid(rand(), true)).'.jpg';

if($imagem['tmp_name'] == ''){

echo '<div class="no">Essa imagem não pode ser enviada!</div>';

}elseif(end(explode('.', $imagem['name'])) != 'jpg') {

echo '<div class="no">Envie apenas imagens com as extensões jpg, jpeg, JPG ou JPEG!</div>';

}else{

if(crop('galerias', $imagem['tmp_name'], '200', '200', $nova_imagem)){

 

$cadastrar_galeria = $pdo->prepare("INSERT INTO `galerias` SET titulo = ?, capa = ?, data = NOW(), status = 0");

$dados = array($titulo, $nova_imagem);

 

if($cadastrar_galeria->execute($dados)){

echo '<script>alert("Sua galeria foi cadastrada!");location.href="cadastrar.php"</script>';

}

}

}

}

}

?>

 

Outra questão é que o crop da imagem faz um corte centralizado. Exemplo: a foto de um pássaro, no corte passa a exibir a capa da galeria apenas com o peito da ave. Ao invés de cortar a imagem, preciso que o sistema gere thumbnails que mostre a imagem por completo.

Grato.

Pessoal, encontrei o erro mas não sei como resolver. O problema está nas linhas Array ( [name] => Paisagem na região rural de Antônio Dias (1).JPG [type] => [tmp_name] => [error] => 1 => 0 ) e }elseif(end(explode('.', $imagem['name'])) != 'jpg'). Se a imagem for JPG o sistema acusa o erro pois estou verificando imagens jpg. Como faço para o sistema diferenciar jpg, JPG, jpeg e JPEG?

 

Olá amigo. Seu problema é por causa da extensão do arquivo.

 

Ao selecionar o arquivo, verifique a extensão do mesmo.

 

Pegue a extensão do arquivo por:

$ext = substr($imagem['name'],-3);

 

Vc vai obter no caso um arquivo com extensão maiúscula (JPG)

 

Agora é só fazer um:

 

$ext = strtolower('.'.$ext);

 

Agora é só mover para a nova pasta $nomearquivo.$ext

Compartilhar este post


Link para o post
Compartilhar em outros sites

#7 bem observado..

 

além do erro = 1 refrente ao tamnaho limite..

 

 

fazendo um adendo, não é seguro validar o tipo do arquivo validando a nomenclatura..

 

valide pelo content-type.

Compartilhar este post


Link para o post
Compartilhar em outros sites

$ext = substr($imagem['name'],-3);

Se a extensão for jpeg isso dai vai falhar, o mais simples é dar um explode no ponto de pegar o último elemento do array criado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.