Ir para conteúdo

Arquivado

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

AiltonSP

Upload e thumbs de fotos com erro

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta isolar o problema.

Se você está com problema apenas no upload /resize.

Faz um mock desse trecho (isola ele ignora input de usuário usando dados via hardcode)

Fica difícil alguém externo ajudar você.

No mais leia as regras e que tem dicas de exibir os erros e debug

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.