Upload e resize de fotos com problema

Enviada por Ailton 
Ailton
Upload e resize de fotos com problema
27 de January de 2017 às 01:24AM
Boa noite galera.

Estou com um grande problema. Estou desenvolvendo um sistema de upload e resize de fotos, ele pega a foto da pasta em tamanho normal, diminui ela em dois tamanhos e salva em duas pastas chamadas Fotosg e Fotosp. O sistema dará opção para o usuário inserir até 10 fotos, uma de cada vez. A primeira opção de envio está funcionando normalmente, mas da segunda em diante não funciona. Estou usando o método GET, e quando tento enviar da segunda em diante no navegador aparece a página em branco e o endereço:

http://localhost/teste/UpLoadFuncoes.php?funcao=Foto2

Os códigos estão idênticos, só mudando os nomes dos campos. Já revisei dezenas de vezes e não acho nenhum erro.
Segue os código:


UploadFotos.php

<form id="" method="POST" action="UpLoadFuncoes.php?funcao=FotoPrincipal" enctype="multipart/form-data" onSubmit="submit.disabled = 'disabled';">

<div id="bordas" style="height:30px; width:310px; text-align:center; padding-top:8px; top:12px; left:10px; background-color:#FFF; margin-top:28px; margin-left:45px; float:left; ">

<input id="img1" type="file" size="75" maxlength="350" name="img1" value="" />

</div>

<div style=" height:17px; width:50px; padding-top:1px; left:10px; margin-top:12px; margin-left:160px; text-align:center; float:inherit;">

<input class="button1" type="submit" id="submit" name="submit" value="Enviar" />

</div>

</form>


xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


UpLoadFuncoes.php


$PastaFotog = "./fotosg/";
$PastaFotop = "./fotosp/";


if($_GET['funcao'] == "FotoPrincipal" && is_file($_FILES['img1']['tmp_name'])){ // compara a função e o arquivo


$upload_tmp = (!empty($_FILES['img1']['tmp_name'])) ? $_FILES['img1']['tmp_name'] : '';

//Se o arquivo foi enviado ao servidor, serão feitas algumas checagens no arquivo
if (is_uploaded_file($upload_tmp))
{
//Armazena em um array, as extensões de arquivo que serão aceitas
$img_types = array(".gif", ".jpg", ".jpeg", ".JPG", ".JPEG", ".png");

//armazena na variável $img, o nome de upload do arquivo, que é img.
$img = $_FILES['img1'];

/*pega o nome da imagem, pega tudo o que estiver antes do ponto ".",
*deixando a extensão de fora.
*/
$img_name = strtolower(substr($img['name'], 0, strrpos($img['name'],".")));

$img_name = time();

//pega somente a extensão do arquivo, tudo o que estiver depois do pnto
$img_ext = strtolower(strrchr($img['name'], "."));

//diretório temporário, onde a imagem ficará até ter o seu tamanho reduzido.
$img_tmp_dest = "./fototemp/";

//faz uma verificação no nome da imagem, que só poderá conter letras e números.
if (!preg_match("/^[-0-9A-Z_\' '[\]]+$/i", $img_name)) {
echo ("<script>alert('A imagem deve ter um nome legivel.');location='UploadFotos.php';</script>");

/*chega se o tamanho da imagem que está sendo usada no upload tem tamanho
*maior que o estabelecido previamente.
*/
} elseif ($img['size'] > $settings['img_max_b']) {
echo ("<script>alert('A imagem deve ter tamanho menor/igual a 3000 bytes.');location='UploadFotos.php';</script>");

/*E se o formato do arquivo que está sendo usado no upload não for um dos aceitos...*/
} elseif (!in_array($img_ext, $img_types))
{
echo("<script>alert('São aceitos os seguintes formatos de arquivos: .gif, .jpg, .jpeg, .JPG, .JPEG, .png.');location='UploadFotos.php';</script>");

for($i = 0; $i < count($img_types); $i++)
{
if(count($img_types[$i]))
{
echo($img_types[$i] . ",\n\t");
}
}
} else {

//captura a imagem que se encontra no diretório temporário que criamos.
$img_file = image_exists($img_tmp_dest, $img_name . $img_ext);

/*E então copia a imagem que está em $_FILES['img']['tmp_name'] para o nosso
*diretório temporário.
*/
move_uploaded_file($upload_tmp, $img_tmp_dest . $img_file);

/*Modifica as permissões de acesso ao arquivo.
* Escrita e leitura para o proprietário, somente leitura para todos os outros.
*/
chmod($img_tmp_dest . $img_file, 0644);

//pega a largura, a altura e o tipo de imagem que está sendo usada.
list($width, $height, $type) = @getimagesize($img_tmp_dest . $img_file);

/*Se preferir use assim: */
$imagefile = getimagesize($img_tmp_dest . $img_file);

if ($imagefile[0] > 3000 || $imagefile[1] > 1700) {

echo ("<script>alert('Imagem muito grande, escolha uma com até 3000 x 1700 pixels.');location='UploadFotos.php';</script>");
}

else {
//cria um nome diferente para a imagem menor
$img_thumb = image_exists($img_tmp_dest, $img_name . "p" . $img_ext);

//cria um nome diferente para a imagem maior
$img_thumb2 = image_exists($img_tmp_dest, $img_name . $img_ext);

/*Aqui é usada a função createthumbnail() que criamos anteriormente
*para gerar as imagens de tamanho menor.
*/
createthumbnail($type, $img_tmp_dest . $img_file, $img_tmp_dest . $img_thumb,
$settings['thumb_w'], $settings['thumb_h'], $settings['thumb_compression']);


/*Aqui é usada a função createthumbnail() que criamos anteriormente
*para gerar as imagens de tamanho maior.
*/
createthumbnail($type, $img_tmp_dest . $img_file, $img_tmp_dest . $img_thumb2,
$settings['thumb_w2'], $settings['thumb_h2'], $settings['thumb_compression']);


/*copia a imagem, já redimensionada, para a pasta fotosp*/
copy($img_tmp_dest . $img_thumb, "./fotosp/" . $img_thumb);

if($FotoPrincipalp != "SemFoto.png"){

unlink("./fotosp/$FotoPrincipalp"); // apaga o aquivo na pasta fotos
} else{
($FotoPrincipalp == $FotoPrincipalp);
}


/*copia a imagem de tamanho maior para a pasta grande*/
copy($img_tmp_dest . $img_thumb2, "./fotosg/" . $img_file);

if($FotoPrincipal != "SemFoto.png"){

unlink("./fotosg/$FotoPrincipal"); // apaga o aquivo na pasta fotos
}else{
($FotoPrincipal = $FotoPrincipal);
}


/*apaga o conteúdo da pasta temporária que usamos durante todo o processo*/
unlink($img_tmp_dest . $img_thumb);
unlink($img_tmp_dest . $img_thumb2);
unlink($img_tmp_dest . $img_file);

/* Salva o nome no bancode dados */

$MySQLi->query("UPDATE clientes SET FotoPrincipal='$img_file', FotoPrincipalp='$img_thumb' WHERE id='572'") or die (mysql_error());


echo ("<script>alert('Foto Principal enviada com sucesso!');location='UploadFotos.php';</script>");

}

}

}
else
{
echo ("<script>alert('Erro no envio! Verifique o tamanho do arquivo e tente novamente!');location='UploadFotos.php';</script>");
}
}


xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Opção de envio da segunda foto que não funciona

<form method="post" action="UpLoadFuncoes.php?funcao=Foto2" enctype="multipart/form-data" onSubmit="submit.disabled = 'disabled';">

<div id="bordas" style="height:30px; width:310px; text-align:center; padding-top:8px; top:12px; left:10px; background-color:#FFF; margin-top:28px; margin-left:45px; float:left; ">

<input id="img2" type="file" size="75" maxlength="350" name="img2" value=""/>

</div>

<div style=" height:17px; width:50px; padding-top:1px; left:10px; margin-top:12px; margin-left:160px; text-align:center; float:inherit;">

<input class="button2" type="submit" id="submit2" onClick="this.className = 'button2 disabled';" name="submit2" value="Enviar" />

</div>

</form>


xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


if($_GET['funcao'] == "Foto2" && is_file($_FILES['img2']['tmp_name'])){ // compara a função e o arquivo

$upload_tmp = (!empty($_FILES['img2']['tmp_name'])) ? $_FILES['img2']['tmp_name'] : '';

//Se o arquivo foi enviado ao servidor, serão feitas algumas checagens no arquivo
if (is_uploaded_file($upload_tmp))
{
//Armazena em um array, as extensões de arquivo que serão aceitas
$img_types = array(".gif", ".jpg", ".jpeg", ".JPG", ".JPEG", ".png");

//armazena na variável $img, o nome de upload do arquivo, que é img.
$img = $_FILES['img2'];

/*pega o nome da imagem, pega tudo o que estiver antes do ponto ".",
*deixando a extensão de fora.
*/
$img_name = strtolower(substr($img['name'], 0, strrpos($img['name'],".")));

$img_name = time();


//pega somente a extensão do arquivo, tudo o que estiver depois do pnto
$img_ext = strtolower(strrchr($img['name'], "."));

//diretório temporário, onde a imagem ficará até ter o seu tamanho reduzido.
$img_tmp_dest = "./fototemp/";

//faz uma verificação no nome da imagem, que só poderá conter letras e números.
if (!preg_match("/^[-0-9A-Z_\' '[\]]+$/i", $img_name)) {
echo ("<script>alert('A imagem deve ter um nome legivel.');location='UploadFotos.php';</script>");

/*chega se o tamanho da imagem que está sendo usada no upload tem tamanho
*maior que o estabelecido previamente.
*/
} elseif ($img['size'] > $settings['img_max_b']) {
echo ("<script>alert('A imagem deve ter tamanho menor/igual a 3000 bytes.');location='UploadFotos.php';</script>");

/*E se o formato do arquivo que está sendo usado no upload não for um dos aceitos...*/
} elseif (!in_array($img_ext, $img_types))
{
echo("<script>alert('São aceitos os seguintes formatos de arquivos: .gif, .jpg, .jpeg, .JPG, .JPEG, .png.');location='UploadFotos.php';</script>");

for($i = 0; $i < count($img_types); $i++)
{
if(count($img_types[$i]))
{
echo($img_types[$i] . ",\n\t");
}
}
} else {

//captura a imagem que se encontra no diretório temporário que criamos.
$img_file = image_exists($img_tmp_dest, $img_name . $img_ext);

/*E então copia a imagem que está em $_FILES['img']['tmp_name'] para o nosso
*diretório temporário.
*/
move_uploaded_file($upload_tmp, $img_tmp_dest . $img_file);

/*Modifica as permissões de acesso ao arquivo.
* Escrita e leitura para o proprietário, somente leitura para todos os outros.
*/
chmod($img_tmp_dest . $img_file, 0644);

//pega a largura, a altura e o tipo de imagem que está sendo usada.
list($width, $height, $type) = @getimagesize($img_tmp_dest . $img_file);

/*Se preferir use assim: */
$imagefile = getimagesize($img_tmp_dest . $img_file);

if ($imagefile[0] > 3000 || $imagefile[1] > 1700) {

echo ("<script>alert('Imagem muito grande, escolha uma com até 3000 x 1700 pixels.');location='UploadFotos.php';</script>");
}

else {
//cria um nome diferente para a imagem menor
$img_thumb = image_exists($img_tmp_dest, $img_name . "p" . $img_ext);

//cria um nome diferente para a imagem maior
$img_thumb2 = image_exists($img_tmp_dest, $img_name . $img_ext);

/*Aqui é usada a função createthumbnail() que criamos anteriormente
*para gerar as imagens de tamanho menor.
*/
createthumbnail($type, $img_tmp_dest . $img_file, $img_tmp_dest . $img_thumb,
$settings['thumb_w'], $settings['thumb_h'], $settings['thumb_compression']);


/*Aqui é usada a função createthumbnail() que criamos anteriormente
*para gerar as imagens de tamanho maior.
*/
createthumbnail($type, $img_tmp_dest . $img_file, $img_tmp_dest . $img_thumb2,
$settings['thumb_w2'], $settings['thumb_h2'], $settings['thumb_compression']);


/*copia a imagem, já redimensionada, para a pasta fotosp*/
copy($img_tmp_dest . $img_thumb, "./fotosp/" . $img_thumb);

if($Foto2p != "SemFoto.png"){

unlink("./fotosp/$Foto2p"); // apaga o aquivo na pasta fotos
} else{
($Foto2p == $Foto2p);
}

/*copia a imagem de tamanho maior para a pasta grande*/
copy($img_tmp_dest . $img_thumb2, "./fotosg/" . $img_file);

if($Foto2 != "SemFoto.png"){

unlink("./fotosg/$Foto2"); // apaga o aquivo na pasta fotos
}else{
($Foto2 = $Foto2);
}


/*apaga o conteúdo da pasta temporária que usamos durante todo o processo*/
unlink($img_tmp_dest . $img_thumb);
unlink($img_tmp_dest . $img_thumb2);
unlink($img_tmp_dest . $img_file);


/* Salva o nome no bancode dados */


$MySQLi->query("UPDATE clientes SET Foto2='$img_file', Foto2p='$img_thumb' WHERE id='572'") or die (mysql_error());


echo ("<script>alert('Foto 2 enviada com sucesso!');location='UploadFotos.php';</script>");

}


}

}
else
{
echo ("<script>alert('Erro no envio! Verifique o tamanho do arquivo e tente novamente!');location='UploadFotos.php';</script>");
}
}


Desde já obrigado.
Eduardo Molina
Re: Upload e resize de fotos com problema
18 de February de 2017 às 03:04PM
bom dia, emves de tu criar 10 inputs de fotos, não seria melhor tu criar 1 unico input, e trabalhar apenas 1 com.
Eduardo Molina
Re: Upload e resize de fotos com problema
18 de February de 2017 às 03:06PM
https://www.scriptbrasil.com.br/forum/topic/161933-mega-tutorial-upload-simples-e-multiplo/
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.