Ir para conteúdo

Arquivado

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

LeeoSantos

[PHP] Upload de imagens com problemas

Recommended Posts

[DUVIDA]
Sempre usei esse script para upload de imagens mas ultimamente ele tem me dado uma dorzinha de cabeça, sempre quando executo ele a pagina diz que a conexão foi reiniciada e quando eu aperto alt+tab vejo uma janela de erro escrito apache http server mas ela nao é exibida, desinstalei a versão do wamp q eu uso e instalei uma mais recente, de inicio funcionou mas dps voltou a acontecer a mesma coisa, voltei com a versão mais antiga e tbm funcionou até certo momento...hora ele exibe esse erro do apache hora ele executa tudo mas nao faz o upload das imagens
será q alguem sabe o que esta acontecendo ou ja passou por isso ?
Agradeco desde ja
segue o codigo completo:

 

if(isset($_POST['cadastrarproduto'])){

$modelo = $_POST['modelo'];
$marca = $_POST['marca'];
$preco = $_POST['valor'];
$preco_promocao = $_POST['valor_promocao'];
$quantidade = $_POST['quantidade'];
$categoria = $_POST['categoria'];
$caracteristicas = $_POST['caracteristicas'];
$especificacoes = $_POST['especificacoes'];
$promocao = $_POST['promocao'];
$lancamento = $_POST['lancamento'];
$tamanho_p = $_POST['tamanho_p'];
$tamanho_m = $_POST['tamanho_m'];
$tamanho_g = $_POST['tamanho_g'];
$tamanho_gg = $_POST['tamanho_gg'];
$cor_1 = $_POST['cor1'];
$cor_2 = $_POST['cor2'];
$cor_3 = $_POST['cor3'];
$cor_4 = $_POST['cor4'];
$sem_cor = $_POST['sem_cor'];
$id_loja = $_SESSION['usuarioID'];

$cadastrarproduto = mysql_query("INSERT INTO produtos (id_loja, modelo, marca, preco, preco_promocao, categoria, promocao, lancamento, estoque, caracteristicas, especificacoes, img_principal, img_principal_thumb, tamanho_p, tamanho_m, tamanho_g, tamanho_gg, cor_1, cor_2, cor_3, cor_4, sem_cor, numerovendas) VALUES ('$id_loja', '$modelo', '$marca', '$preco', '$preco_promocao', '$categoria', '$promocao', '$lancamento', '$quantidade', '$caracteristicas', '$especificacoes', '0', '0', '$tamanho_p', '$tamanho_m', '$tamanho_g', '$tamanho_gg', '$cor_1', '$cor_2', '$cor_3', '$cor_4', '$sem_cor', '0')")or die(mysql_error());;

$peg = mysql_query("SELECT * FROM produtos WHERE modelo = '$modelo'") or die(mysql_error());
while($mostrar = mysql_fetch_array($peg)){
$id_pego = $mostrar['id'];
}

$in = mysql_query("INSERT INTO registro (id, votos, pontos) VALUES ('$id_pego', '0', '0')")or die(mysql_error());
$update = mysql_query("UPDATE produtos SET cod = 'p-0$id_pego' WHERE modelo = '$modelo'")or die(mysql_error());

$pasta = '../lojas/produtos/'; /*aqui coloca o caminho da imagem grande*/
$pastathumb = '../lojas/produtos/thumb/'; /*aqui o caminho da thumb*/
$permitido = array('image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png');
$img = $_FILES['img'];
$countImg = count($img['name']);

require('funcao/funcao_up.php');
for($i=0;$i<$countImg;$i++){

$tmp = $img['tmp_name'][$i];
$name = $img['name'][$i];
$type = $img['type'][$i];

if(!empty($name) && in_array($type, $permitido)){
$nome = 'Alem-Shop-0-'.$i.'.jpg';
$nomethumb = 'Alem-Shop-0-'.$i.'-thumb.jpg';
upload($tmp, $nome, 800 /*aqui coloca a largura da imagem grande*/, $pasta);
uploadthumb($tmp, $nomethumb, 250 /*aqui coloca a largura da thumb*/, $pastathumb);

$cadastrarImg = mysql_query("INSERT INTO img_produtos (id_produto, img, thumb) VALUES ('$id_pego', '$nome', '$nomethumb')")or die(mysql_error());

$atualizar = mysql_query("UPDATE produtos SET img_principal_thumb ='Alem-Shop-".$id_pego."-".$i."-thumb.jpg', img_principal = 'Alem-Shop-".$id_pego."-".$i.".jpg' WHERE id = '$id_pego'")or die(mysql_error());

if($cadastrarproduto == true){
echo '<META HTTP-EQUIV=REFRESH CONTENT="3; URL=?pg=produtos"><br><br>
Produto cadastrado com sucesso!<br><br>
<img src="img/loading.GIF" alt="" height="35"/>';
}else{
echo '<META HTTP-EQUIV=REFRESH CONTENT="3; URL=?pg=cadastrar-produto"><br><br>
Ops, Aconteceu algum erro, tente novamente ou avise o administrador<br><br>
<img src="img/loading.GIF" alt="" height="35"/>';
}//termina o if do cadastrar

}else{ echo 'erro';}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da uma olhada nas diretivas upload_max_filesize e post_max_size, no php.ini, e altera os valores para mais.

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja estão em 80M ambos, isso que estou achando estranho, a uns 2 dias atras ele tava funcionando de boa, fazendo o upload normal das imagens, agora parou, a imagem é um array podendo receber até 5 imagens, quando executo o script ele me da a mensagem de produto cadastrado e abaixo me da tbm o echo de erro aparecendo cinco vezes o erro, isso pq eu coloco uma imagem só para testar, mas essa imagem tbm nao aparece na pasta, chega a ser salva no bd mas nao vai para a pasta :upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, esta em 0777, continua aparecendo que a conexão foi reiniciada quando executo, estranho que sempre usei ele para upload de imagem e é a primeira vez que tenho esse problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então provavelmente é erro de tempo de execução. O upload deve estar demorando muito para ser concluido e expirando.

 

Tente aumentar o tempo de expiração do servidor pra ver se resolve!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leeo, posso dar uma dica!

Faz primeiro o sistema de upload puro, depois você incrementa os outros dados no banco. Você está trabalhando com muitos dados. Se quiser um help, pego esse código aí man:

function getExtension($str) 
{

         $i = strrpos($str,".");
         if (!$i) { return ""; } 

         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
 }

$userdetails=$user_id; // id da sessao

$valid_formats = array("png", "PNG"); // tipo de imagem
	if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
		{
			$name = $_FILES['photoimg']['name'];
			$size = $_FILES['photoimg']['size'];
			$full_name = $full_name;
			$p_status="1";
			$actual_image_name='';

			if(strlen($full_name)>0 && strlen($name))
				{
					 $ext = getExtension($name);
					if(in_array($ext,$valid_formats))
					{
					if($size<(1024*3000)*5)
						{
							$actual_image_name = time().$userdetail.".".$ext;

							$tmp = $_FILES['photoimg']['tmp_name'];
$profile_path = "uploads/";

	if(move_uploaded_file($tmp, $profile_path.$actual_image_name))
								{

							$upload = $profile_path.$actual_image_name;
							$cartaz = "uploads/".time().$user_id."."."png";

		
							$settings=mysql_query("INSERT INTO imagem (`id`, `uid`, `video`, `imagem`, `tipo`, `publicar`, `descricao`) VALUES ('', '$user_id', '$upload', '$cartaz', 'png', '', '$message')");

		
									if($settings)
								        {
									
									$msg="<span class='succ'>Successful.  </span>";
									
									}

									
								}
							else
							{
							$msg="<span class='error'>Failed.</span>";
							}
						}
						else
						{
						$msg="<span class='error'>Image file size max 300 KB</span>";
						}
						}
						else
						{
						$msg="<span class='error'>Invalid file format.</span>";
						}
				}
				
            else if(strlen($full_name)>0)
			{
				
                                   

									if($settings)
								    {
								
									$msg="<span class='succ'>Updated. </span>";
									
									}
			}
			else
			{
				$msg="<span class='error'>Please give valid name and image..!</span>";
			}
				
		
		}

Tenta executar esse código, depois daí, está pronto!!!!

Boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, realmente é estranho parar do nada...Mas se parou foi por algum motivo, então, vamos encontrar!

 

Faz o que o nosso amigo do post de cima falou, porém, acho melhor você fazer de um jeito mais simples pra não perder muito tempo codificando, até pq o que nos interessa é encontrar o erro. Faz um upload de uma só imagem com o move_uploaded_files() pra vê se ta cadastrando. Caso esteja, adiciona o envio múltiplo de imagens e testa. Se não funcionar, posta aqui teu php.ini.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo arquivo pequeno, firewall nao é e agora fazendo mais testes aqui percebi que só imagem jpeg estão sendo enviadas mesmo sendo permitido pelo array imagens png, o que poderia ser ? nunca aconteceu isso, aceitava png normalmente

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vei, testa um envio simples! Form com input file e arquivo com move_uploaded_files() e posta aqui o que deu.

 

Posta aqui também o log do apache e o log do php, por favor.

 

Qual enctype você está utilizando no seu form?

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.