Ir para conteúdo

Arquivado

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

Luis Fernando R. Valle

Upload de foto - Problema com imagens grandes

Recommended Posts

Boa tarde.

Tenho um formulario para envio de multiplas imagens e estou com um problema nele.

 

Algumas imagens estão sendo inseridas e outras não.

Não sei se é o time out ou o limite de tamanho dos arquivos

 

Em meu php.ini tenho os seguintes códigos:

 

post_max_size = 500M

upload_max_filesize = 500M

max_execution_time = 1000

max_input_time = 1000

 

 

Gostaria de saber se tenho que alterar algo ou inserir algo para que de certo

 

Observação: Esse erro ocorre mais quando a internet é lenta e não da erro algum. Insere os dados no banco mas a imagem não é inserida na pasta

Compartilhar este post


Link para o post
Compartilhar em outros sites

Além de (obviamente) você enviar a parte do seu código que está com problema, algumas perguntas que podem lhe auxiliar a encontrar o problema e saná-lo:

 

- Qual o tamanho total das imagens (soma do tamanho dos arquivos) que você está enviando?

- Qual o limite de memória liberada para a execução do PHP?

- Está fazendo algum tratamento nas imagens? Se sim, está usando GD?

- Qual a ordem de execução do seu script? Ele primeiro grava no banco depois faz alguma operação com as imagens?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faço o upload dele por um formulario, redimensiono e salvo na pasta e o caminho no banco

Segue o código abaixo

 

 

$foto = $_FILES['foto'];

list($largura1, $altura1) = getimagesize($foto['tmp_name'][$i]);
if( ($largura1>700) || ($altura1>700) ){
if ($largura1 > $altura1){
$porcentagem1 = (700 / $largura1);
}
else{
$porcentagem1 = ( 700 / $altura1);
}
}
else{
$porcentagem1 = 1;
}
$novalargura1 = round($largura1 * $porcentagem1);
$novaaltura1 = round($altura1 * $porcentagem1);

$upload1x = imagecreatetruecolor($novalargura1, $novaaltura1);

$upload1y = imagecreatefromjpeg($foto['tmp_name'][$i]);
imagecopyresampled($upload1x, $upload1y, 0, 0, 0, 0, $novalargura1, $novaaltura1, $largura1, $altura1);
imagejpeg($upload1x, "../fotos_imoveis/{$imovelID}_{$i}.jpg");
$foto = "../fotos_imoveis/{$imovelID}_{$i}.jpg";

$sql_foto = "INSERT INTO imovel_foto
(imovel_imovelID, foto)
VALUES ('$imovelID', '$foto')";
$sql_foto = mysql_query($sql_foto) or die ("Erro-foto.");
}

 

 

Fora isso e o que tem no php.ini, não tenho mais nada.

Agradeço desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique se o índice

 

$foto['error'][$i]

 

Vem com algum valor antes de continuar.



Sugestão, use ImageMagick ao invés de GD.

Mais rápida, mais fácil e usa menos memória.

Ela trabalha com arquivos gigantes como se fossem folhas de seda, de tão leve que fica o processo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem permissão sim.

Arquivos pequenos estão sendo gravados normalmente.

Apenas quando envio uma imagem de 12mb por exemplo que não grava.

 

Alias, grava apenas o id e mais informação nenhuma que envio no formulario.

 

Como se perdesse todas as informações

Compartilhar este post


Link para o post
Compartilhar em outros sites


Crie um script só com isto:


echo '<pre>'; print_r($_FILES);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando mando uma foto pequena ele mostra

 

Array(    [foto] => Array        (            [name] => Array                (                    [0] => Pôr-do-sol.jpg                )            [type] => Array                (                    [0] => image/jpeg                )            [tmp_name] => Array                (                    [0] => /tmp/phpdKDSBD                )            [error] => Array                (                    [0] => 0                )            [size] => Array                (                    [0] => 71189                )        ))

 

 

 

 

quando envio a foto grande ele da (11MB por exemplo)

 

Array()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie um arquivo só com isto:

 

<?php phpinfo();

 

E veja os valores dos itens:

 

upload_max_filesize

post_max_size

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.