Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, amigos da imaster.
Bom, estes dias estou com uma dificuldade que parece ser besteira.
O que acontece é que quando faço upload com a classe abaixo as imagens duplicam, ja coloquei imagedestroy($image) e nada.
Esta classe não me retorna nenhum erro.
<?php
set_time_limit(0);
include "funcao.php";
class Upload
{
var $arquivo = "";
var $erro = array ( "0" => "upload execultado com sucesso!",
"1" => "O arquivo é maior que o permitido pelo Servidor",
"2" => "O arquivo é maior que o permitido pelo formulario",
"3" => "O upload do arquivo foi feito parcialmente",
"4" => "Não foi feito o upload do arquivo"
);
function Enviar_Fotos($id, $nome, $album)
{
foreach ($_FILES["arquivo"]["error"] as $key => $error){
if ($error == UPLOAD_ERR_OK){
$name = $_FILES["arquivo"]['name'][$key];
$type = $_FILES["arquivo"]['type'][$key];
$error = $_FILES["arquivo"]['error'][$key];
$size = $_FILES["arquivo"]['size'][$key];
if(is_uploaded_file($_FILES["arquivo"]['tmp_name'][$key])){
$diretorio = "../img/fotos/";
$nome_foto = "imagem".time().".jpg";
$nome_thumb = "thumb".time().".jpg";
reduz_imagem($_FILES["arquivo"]['tmp_name'][$key], 500, 375, $diretorio.$nome_foto);
reduz_imagem($_FILES["arquivo"]['tmp_name'][$key], 150, 109, $diretorio.$nome_thumb);
echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$error."</span><br />";
$pequena = 'img/fotos/'.$nome_thumb;
$foto = 'img/fotos/'.$nome_foto;
$query = mysql_query("insert into fotos (nome, foto, foto_thumb,album) values('$nome', '$foto', '$pequena', '$album')");
}else{
echo "<span style=\"color: white; border: solid 1px; background: red;\">".$error."</span><br />";
}
}
}
}
}
?>
<?php//pega o tamanho da imagem ($original_x, $original_y)
list($width, $height) = getimagesize($img);
$original_x = $width;
$original_y = $height;
// se a largura for maior que altura
if($original_x > $original_y) {
$porcentagem = (100 * $max_x) / $original_x;
} $porcentagem = (100 * $max_y) / $original_y;
}
$tamanho_x = $original_x * ($porcentagem / 100);
$tamanho_y = $original_y * ($porcentagem / 100);
$image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);
$image = imagecreatefromjpeg($img);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
return imagejpeg($image_p, $nome_foto, 100);
imagedestroy($image_p);
imagedestroy($image);
$img = "";
$max_x = "";
$max_y= "";
$nome_foto= "";
}
?>Segue abaixo meu form.
Creio que esta tudo certo nele.
<?php
//variaveis via POST
$codigo = $_GET['codigo'];
$acao = $_GET['acao'];
$msg = $_GET['msg'];
$pagina = "galeria";
$id = $_POST['id'];
$nome = $_POST['nome'];
$album = $_GET['album'];
switch($acao){
case "cadastrar":
require_once "classes/class_fotos.php";
$pg = 1;
$upload = new Upload();
$upload->Enviar_Fotos($id, $nome, $album, $pg);
$msg = urlencode("Fotos cadastradas com sucesso!");
echo '<meta http-equiv="refresh" content="0; URL=home.php?pagina='.$pagina.'&msg='.$msg.'">';
break;
case "alterar":
require_once "classes/class_fotos.php";
$pg = 2;
$upload = new Upload();
$upload->Enviar_Fotos($id, $nome, $album, $pg);
$msg = urlencode("Fotos atualizadas com sucesso!");
echo '<meta http-equiv="refresh" content="0; URL=home.php?pagina=GaleriaFotos&album='.$album.'&msg='.$msg.'">';
break;
}
?>
<div id="emCima">
<div style="border-bottom:solid 1px #EBEBEB;">
<table>
<tr>
<td><span class="esquerda"><a href="?pagina=album"><img src="img/cadastrar.jpg" border="0" /></a></span></td>
<td><span class="esquerda"><a href="?pagina=album">Adcionar Album</a></span> </td>
</tr>
</table>
</div><br />
<div style="color:#666; border:solid 1px #EBEBEB; padding:10px; margin:10px 0 10px 0;">
<a href="?pagina=galeria" style="background:none;color:#666;">Album </a> / Adcionar Fotos
</div>
<?php
$id = $_GET['album'];
$q = mysql_query("select * from fotos where album='$id'");
$t = mysql_num_rows($q);
if($t==0){
echo "<h1>Este Album não possue nenhum foto!</h1>";
}else{
echo "<h1>Este Album possue ".$t." Fotos!</h1>";
}
while($r = mysql_fetch_array($q)){
?>
<span class="blocoFotoAlbum" id="bloco">
<a href="#" onclick="obtemConsultaAlbum(1,<?=$r['id'];?>); return false" style="background:none;color:#666;">
<img src="../<?=$r['foto_thumb'];?>" border="0" class="foto" /><br />
<?=implode("/",array_reverse(explode("-",$r['data_evento'])));?><br /> <?=$r['nome'];?></a>
</span>
<? }?>
<div style="border:solid 1px #EBEBEB;">
<h1>Adcionar Fotos</h1>
<form action="?pagina=GaleriaFotos&album=<?=$id;?>&acao=cadastrar" method="post" enctype="multipart/form-data">
<input type="file" name="arquivo[]" class="multi" accept="jpg" /> <br />
<input type="submit" value="Enviar Fotos" />
</form>
</div>
</div>luciano antony, sugiro que leia o tópico de orientações para uma boa participação, em especial a parte sobre as normas do fórum. Seu post anterior foi excluído.
Sobre o seu problema, comente esta linha e veja se resolve o seu problema
echo '<meta http-equiv="refresh" content="0; URL=home.php?pagina='.$pagina.'&msg='.$msg.'">';
Carlos Eduardo
Não sei se irá te ajudar, mas dá uma olhada no modo como você tá enviando o seu <form>. A uns tempos atrás tive este mesmo problema. Quando clicava no botão enviar eu validava alguns campos pelo javascript e depois enviava o form. No IE funcionava beleza, porém no Chrome e no Safari ele duplicava, pois enviava 2 vezes o <form>. Para testar eu criei uma variavel ++$_SESSION['teste'] e imprimia ela. Sempre ia de 2 em 2.