Jump to content


Photo

Problema Com Upload De Imagens


  • Faça o login para participar
26 replies to this topic

#16 GM_Tek

GM_Tek

    Eh-Nois =D

  • Banidos
  • PipPipPip
  • 212 posts
  • Sexo:Não informado
  • Localidade:balneário camboriú - sc
  • Interesses:Aprender php =D

Posted 07/06/2005, 20:14

Xandão Grunge, esse que vc passou nao funcinou, o ftp nao da permissçao,
---------
ahh ok ja descubri.. tem que criar a pasta fotos !!, e pra se eu quiser deixar o nome original da foto??

Edição feita por: GM_Tek, 07/06/2005, 20:35.


#17 mysteriouspy

mysteriouspy

    Normal

  • Usuários
  • 114 posts
  • Sexo:Não informado

Posted 08/06/2005, 15:38

Awe galera..blz??

Aih xandao, ou alguem que saiba me dizer... Seguinte, eu testei esse script, gostei muito pois ele soh envia imagens neh, mas to com uma duvida e gostaria que me ajudassem se possivel...

Nesse comando aqui:

if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"]) {
$erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo</font>";
} else {

ele soh está enviando fotos com as extensoes citada, ateh aih blz...mas eu gostaria que o script fizesse tipo...se a pessoa nao enviasse nenhuma foto, ele reconhecesse que o arquivo que a pessoa nao enviou, transformasse na foto chamada blank.gif, uma vez que eu nao envio nenhuma imagem, ele reconhece como erro, ou seja, fala q o arquivo tah em formato invalido, pois como eu nao enviei nenhuma foto, entao ele nao reconheceu... Alguem sabe fazer essa transformaçao pra mim?? Ahh, PS: a foto blank.jpg está na pasta fotos, caso alguem queira saber...

Desde ja agradeço ae..vlw

#18 Xandão Grunge

Xandão Grunge

    12 Horas

  • Usuários
  • 158 posts
  • Sexo:Não informado
  • Localidade:Chavantes

Posted 08/06/2005, 23:30

mysteriouspy e GM_Tek, vamos ver se posso ajudar:


      if (sizeof($erro)) {
        /* compensa você deixar direto uma imagem "blank.gif" e quando for salvar se der o erro.. apenas gardar o caminho do arquivo*/
        $caminho = pathinfo(__file__);
        $imagem_dir = $caminho['dirname']."/fotos/blank.gif";
        /*
        foreach ($erro as $err) {
            echo " - " . $err . "<BR>";
        }
        echo "<a href=\"upload_foto.php\">Fazer Upload de Outra Imagem</a>";
        */
       
      }


      // Verificação de dados OK, nenhum erro ocorrido, executa então o upload...
      else {
        // Pega extensão do arquivo
        preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);

        // Gera um nome único para a imagem
        //$imagem_nome = md5(uniqid(time())) . "." . $ext[1];

        //mantem o nome original
        $imagem_nome =$_FILES['userfile']['name']
       


        /* Caminho de onde a imagem ficará (Modifiquei agora ele vai descobrir o arquivo real do do diretório).
        Se colocasse do jeito que postei anteriormente daria erro*/
        $caminho = pathinfo(__file__);
        $imagem_dir = $caminho['dirname']."/fotos/".$imagem_nome;


        // Faz o upload da imagem
        move_uploaded_file($arquivo["tmp_name"], $imagem_dir);

        echo "Sua foto foi enviada com sucesso!";
      }


P.S.:
- o conteúdo em azul se refere a dúvida do GM_Tek;
- o conteúdo em vermelho se refere a dúvida do mysteriouspy;
- o conteúdo em verde é uma observação que acho inteiressante pra quem não tem prática de upload, e evita um erro em relação ao script que postei anteriormente neste tópico;

Espero ter ajudado-os,
Xandão Grunge B)
Xandão Grunge B)

#19 mysteriouspy

mysteriouspy

    Normal

  • Usuários
  • 114 posts
  • Sexo:Não informado

Posted 09/06/2005, 14:29

Eu denovo pra enxer o saco auhaua, xandao, o codigo q vc me passou nao deu certo =\ nao sei oq deu de errado =(, de qualquer forma estou passanco o codigo como ficou pra ver se de repente encontra algum erro =oo

//processa e verifica o upload da foto do usuário:
	$erro = $config = array(); 

	// Prepara a variável do arquivo 
	$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE; 
	
	// Tamanho máximo do arquivo (em bytes) 
	$config["tamanho"] = 25000; 

	// Largura máxima (pixels) 
	$config["largura"] = 96; 

	// Altura máxima (pixels) 
	$config["altura"]  = 96; 

	// Formulário postado... executa as ações 
	if ($arquivo) {  
  // Verifica se o mime-type do arquivo é de imagem 
  if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) {
  	$erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo</font>"; 
  } 
  else { 
  	// Verifica tamanho do arquivo 
  	if ($arquivo["size"] > $config["tamanho"]) { 
    $erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo</font>"; 
  	} 
    	
  	// Para verificar as dimensões da imagem 
  	$tamanhos = getimagesize($arquivo["tmp_name"]); 
    
  	// Verifica largura 
  	if ($tamanhos[0] > $config["largura"]) { 
    $erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels</font>"; 
  	} 
  
  	// Verifica altura 
  	if ($tamanhos[1] > $config["altura"]) { 
    $erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels</font>"; 
  	} 
  }
      
    	// Imprime as mensagens de erro 
    	if (sizeof($erro)) { 
        	/* compensa você deixar direto uma imagem "blank.gif" e quando for salvar se der o erro.. apenas gardar o caminho do arquivo*/
        	$caminho = pathinfo(__file__);
        	
  	$imagem_dir = $caminho['dirname']."/fotos/blank.gif";
        	
  	foreach ($erro as $err) {
            	echo " - " . $err . "<BR>";
        	}
        	echo "<a href=\"#\" onClick=\"history.go(-1)\"><font color=\"#FF0000\" size=\"1\" face=\"Verdana\"><link href=\"estilo.css\" rel=\"stylesheet\" type=\"text/css\">Fazer Upload de Outra Imagem</font></a>";
  	
    	} 
    	// Verificação de dados OK, nenhum erro ocorrido, executa então o upload... 
    	else 
    	{ 
        	// Pega extensão do arquivo 
        	preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext); 

        	// Gera um nome único para a imagem 
        	$imagem_nome = md5(uniqid(time())) . "." . $ext[1]; 
        
        /* Caminho de onde a imagem ficará (Modifiquei agora ele vai descobrir o arquivo real do do diretório).
        	Se colocasse do jeito que postei anteriormente daria erro*/
        	$caminho = pathinfo(__file__);
        	
  	$imagem_dir = $caminho['dirname']."/fotos/".$imagem_nome; 
  	
        	// Faz o upload da imagem 
        	move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
  	$declar = "INSERT INTO `tab_users_temp` (`id`, `nome` , `idade` , `sexo`, `cidade`, `estado`, `url` , `email` , `messenger` , `senhap` , `foto`, `interesses`) VALUES ('$id', '$nome', '$idade', '$sexo', '$cidade', '$estado', '$url', '$email', '$messenger', '$senhap', '$imagem_nome', '$interesses');";
  	mysql_db_query ($bd, $declar, $conec);
  	echo ("<font color=\"#000000\" size=\"1\" face=\"Verdana\">Seu cadastro foi concluído com 
    sucesso. O cadastro passara por uma verificação dos Administradores, se tudo 
    correto o cadastro será liberado.</font>
  <p><font color=\"#000000\" size=\"1\" face=\"Verdana\"><a href=\"membros.php\">Clique aqui</a> para ver a pagina 
    de membros.</font></p>");

Eh isso aih...vai algumas observaçoes:
- Pasta de fotos está com o CHMOD correto, e a foto tambem está correta.
- No comando: $caminho = pathinfo(__file__);

$imagem_dir = $caminho['dirname']."/fotos/blank.gif";

foreach ($erro as $err) {
Eu coloque com o /* e sem para ver, se eu deixar com, ele dah aviso de erro, q o arquivo nao pode ser carregado, se eu deixar com o /* ele fica coma pagina em branco..

-No comando $imagem_nome = md5(uniqid(time())) . "." . $ext[1]; ele cria um nome unico pra cada imagem, ou seja, no caso se convertesse para blank.gif nao iria dar problema?

Acredito que seja alguma falta de configuraçao e talz, nessa parte aih, pq no servidor está td ok, fiz varios testes e nao consegui chegar a um resultado final, jah havia testado esse script antes de colocar esse codigo, dava td certo, porem dava o erro q eu queria corrigir, de transformar o caminho da imagem dessa pessoa para blank.jpg ou blank.gif (qualquer coisa eu mudo a extensao)

Acho q eh soh...mto obrigado de qualquer forma e desculpa qualquer coisa ae

Edição feita por: mysteriouspy, 09/06/2005, 14:54.


#20 Xandão Grunge

Xandão Grunge

    12 Horas

  • Usuários
  • 158 posts
  • Sexo:Não informado
  • Localidade:Chavantes

Posted 15/06/2005, 09:35

mysteriouspy se for erro no caminho eu esqueci de avisar,

se a pasta que vc deseja, estiver um nivel acima, vc tem que tirar o ultimo diretório. Ex:

Pasta que está a sua pagina de upload:
/home/vars/www/admin/

Pasta onde as imagens do upload deve ser gravadas:
/home/vars/www/fotos/

nesse caso se vc pegar o caminho através do "pathinfo(__file__);" e depois tentar contanar o de fotos ele tentaria gravar em:
/home/vars/www/admin/fotos/

Portanto vc deveria subir um nível no caminho:

$dir_retira="admin/"; /*coloque se a pasta de destino estiver a um nivel acima. deixe $dir_retira="" caso não este diretório */
$caminho = pathinfo(__file__);
$menos_adm = strlen($caminho['dirname'])- strlen($dir_retira); /* conta quantas strings tem o caminho menos a pasta espeficifaca */
$diretorios = substr($caminho['dirname'], 0, $menos_adm); /* então não pega este ultimo diretório */
$imagem_dir = "$diretorios/logos/$imagem_nome";



Qualquer dúvida posta ai... se possível com a mensagem de erro...

Espero ter ajudado,
Xandão Grunge B)
Xandão Grunge B)

#21 mysteriouspy

mysteriouspy

    Normal

  • Usuários
  • 114 posts
  • Sexo:Não informado

Posted 18/06/2005, 11:13

Aih cara, blz?? Desculpa a demora, estava sem acesso a net, pois entao, testei o q vc me falou, mas mesmo assim nao deu certo, pq eu nao sei oq tah acontecendo q tipo, ele nao tah convertendo o campo em branco do objeto file para blank.jpg...e nao sei se coloquei o codigo q vc me passou corretamente (me desculpe a ignorancia) mas lah vai novamente o codigo

if($erro==0) {	
	//processa e verifica o upload da foto do usuário:
	$erro = $config = array(); 

	// Prepara a variável do arquivo 
	$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE; 
	
	// Tamanho máximo do arquivo (em bytes) 
	$config["tamanho"] = 25000; 

	// Largura máxima (pixels) 
	$config["largura"] = 96; 

	// Altura máxima (pixels) 
	$config["altura"]  = 96; 
	
	// Formulário postado... executa as ações 
	if ($arquivo) {  
  // Verifica se o mime-type do arquivo é de imagem 
  if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"])) {
 	 $erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo</font>"; 
  } 
  else { 
 	 // Verifica tamanho do arquivo 
 	 if ($arquivo["size"] > $config["tamanho"]) { 
    $erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo</font>"; 
 	 } 
   	 
 	 // Para verificar as dimensões da imagem 
 	 $tamanhos = getimagesize($arquivo["tmp_name"]); 
    
 	 // Verifica largura 
 	 if ($tamanhos[0] > $config["largura"]) { 
    $erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels</font>"; 
 	 } 
     	 // Verifica altura 
 	 if ($tamanhos[1] > $config["altura"]) { 
    $erro[] = "<font color=\"#FF0000\" size=\"1\" face=\"Verdana\">Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels</font>"; 
 	 } 
  }
  
      
 	 // Imprime as mensagens de erro 
 	 if (sizeof($erro)) {
          /* compensa você deixar direto uma imagem "blank.gif" e quando for salvar se der o erro.. apenas gardar o caminho do arquivo*/
          $caminho = pathinfo(__file__);
          $imagem_dir = $caminho['dirname']."/fotos/blank.jpg";
          foreach ($erro as $err) {
              echo " - " . $err . "<BR>";
         	 }
          echo "<a href=\"upload_foto.php\">Fazer Upload de Outra Imagem</a>";        
        }
	
 	 // Verificação de dados OK, nenhum erro ocorrido, executa então o upload... 
 	 else { 
    // Pega extensão do arquivo 
    preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext); 
    
    // Gera um nome único para a imagem 
    $imagem_nome = md5(uniqid(time())) . "." . $ext[1]; 
 	 
    /* Caminho de onde a imagem ficará (Modifiquei agora ele vai descobrir o arquivo real do do diretório).
    Se colocasse do jeito que postei anteriormente daria erro*/
    $dir_retira="admin/"; /*coloque se a pasta de destino estiver a um nivel acima. deixe $dir_retira="" caso não este diretório */
    $caminho = pathinfo(__file__);
    $menos_adm = strlen($caminho['dirname'])- strlen($dir_retira); /* conta quantas strings tem o caminho menos a pasta espeficifaca */
    $diretorios = substr($caminho['dirname'], 0, $menos_adm); /* então não pega este ultimo diretório */ 
    $imagem_dir = "$diretorios/fotos/$imagem_nome";
    
    // Faz o upload da imagem 
    move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
    $declar = "INSERT INTO `tab_users_temp` (`idt` , `nome` , `nick` , `idade` , `sexo` , `cidade` , `estado` , `pais` , `msn` , `email` , `url` , `foto` , `login` , `senha` , `interesses` ) VALUES ('$idt' , '$nome' , '$nick' , '$idade' , '$sexo' , '$cidade' , '$estado' , '$pais' , '$msn' , '$email' , '$url' , '$imagem_nome' , '$login', '$senha' , '$interesses');";
    mysql_db_query ($bd, $declar, $conec);
    echo ("<font color=\"#000000\" size=\"1\" face=\"Verdana\">Seu cadastro foi concluído com sucesso. O cadastro passará por uma verificação dos Administradores. Se tudo correto, o cadastro será liberado.<br>O painel de alteração/exclusão de cadastro será liberado em breve.</font>
      <p><font color=\"#000000\" size=\"1\" face=\"Verdana\"><a href=\"membros.php\">Clique aqui</a> para ver a pagina de membros.</font></p>"); 
 	 }
	mysql_close ($conexao);
}}

Basicamente eh isso, qnd a pessoa nao carrega nada, ele avisa q o tipo de arquivo eh invalido, q tme q ser jpg, gif etc...Dei uam olhada mas nao conseguir resolver..e sobre o codigo q vc me passou, as fotos fica armazenadas na pasta fotos e eh exibida em uma pagian acima da pasta fotos e em uma pagina dentro da pasta admin (nao sei se isso ajuda)

Desde ja agradeço, e desculpa pelo transtorno

#22 mysteriouspy

mysteriouspy

    Normal

  • Usuários
  • 114 posts
  • Sexo:Não informado

Posted 20/06/2005, 19:00

Aih galera...eu sei q cuidar de forum eh brabo, mas ngm pode dar um help nao? =(( quem souber msg plz

#23 Stormbringer

Stormbringer

    I'd love to stay with you all

  • Ex-Admins
  • 2927 posts
  • Sexo:Não informado
  • Localidade:Goiânia - GO
  • Interesses:Atualmente: pesquisa e desenvolvimento de web-games

Posted 20/06/2005, 19:37

mysteriouspy, leia as regras... leia principalmente a parte que fala de post-up e de postura ;-)

outra coisa, os moderadores, administradores e monitores nao sabem tudo e nao precisam responder tudo, o forum existe pros usuarios trocarem duvidas e experienca entre eles (y) ... os moderadores/administradores/monitores geralmente respondem, mas isso nao é regra.

******
bom, o problema da kessia esta no que eu jah disse, ela esta tentando dar o getimagesize dentro da pasta temporaria, quando na verdade tem que ser na pasta definitiva, ex:
/home/kessia/pasta_de_fotos/foto.jpg

quanto ao seu, mysteriouspy, esta muito "onde está o Wally", poste mensagem de erro e apenas a parte do codigo pertinente ao erro...

๑۩۞۩๑Let the Carnage Begin!!๑۩۞۩๑


#24 mysteriouspy

mysteriouspy

    Normal

  • Usuários
  • 114 posts
  • Sexo:Não informado

Posted 20/06/2005, 20:12

Cara, me desculpe se de alguma forma eu ofendi a voce ou algum usuario do forum, mas vai algumas observaçoes:

Eu sei como funciona as regras de um forum e/ou qualquer demais foruns e costumo ler sobre postura etc.
Eu sei que os administradores, moderadores entre outros users nao sao obrigados a responderem e muito menos sequer saber sobre a minha duvida, porem, eu coloquei a mensagem pedindo ajuda novamente porque se de repente o post tenha passado despercebido sem querer por alguem, aih eu pedi ajuda novamente, afinal, o forum eh pra isso, nao?

E sobre o Erro que está acontecendo, não há um comando especifico, se vc ler no q eu falei (nao leve essa frase como estupidez, nao me leve a mal) estou explicando exatamente o que aconteceu para poder ser mais claro. Se eh algo contra colocar todo o codigo na pagina, mais uma vez peço desculpas e estarei revendo as regras para nao haver mais 'desentendimentos' entre os usuarios do forum, uma vez que sou admin de um forum e sei o quanto isso eh chato.

Vlw :P

#25 Stormbringer

Stormbringer

    I'd love to stay with you all

  • Ex-Admins
  • 2927 posts
  • Sexo:Não informado
  • Localidade:Goiânia - GO
  • Interesses:Atualmente: pesquisa e desenvolvimento de web-games

Posted 20/06/2005, 20:29

opa,

nao, nao é contra as regras postar o codigo inteiro, mas as vezes um topico nao passa desapercebido, muita gente tem preguica de ler codigos extensos pra achar 1 erro e eu sou um deles
alem do mais, neurolinguisticamente, um cara que posta o codigo inteiro nao sabe nem por onde começar ou esta com preguiça, o que acho que nao é seu caso, pois vc demonstrou ser bem esclarecido...
mas é contra as regras postar em sequencia só pro topico subir e ficar em evidencia, ehehe

seu problema, agora eu li ;-)
nao ha conversao, ele vai usar uma imagem blank.qualquercoisa que JA está no seu servidor, caso tenha havido algum erro no upload. repare:


if (sizeof($erro)) {
         /* compensa você deixar direto uma imagem "blank.gif" e quando for salvar se der o erro.. apenas gardar o caminho do arquivo*/
         $caminho = pathinfo(__file__);
         $imagem_dir = $caminho['dirname']."/fotos/blank.jpg";
         foreach ($erro as $err) {
             echo " - " . $err . "<BR>";
          }
         echo "<a href=\"upload_foto.php\">Fazer Upload de Outra Imagem</a>";        
       }


nao analisei friamente nem testei o codigo, mas a primeira vista é isso o que ele faz, ele nao converte o nome da imagem pra blank.jpg ;)

๑۩۞۩๑Let the Carnage Begin!!๑۩۞۩๑


#26 mysteriouspy

mysteriouspy

    Normal

  • Usuários
  • 114 posts
  • Sexo:Não informado

Posted 20/06/2005, 20:39

Vlw ae pro ter respondido cara...e desculpa aih pelo 'flood'

Entao, a imagem ja está no servidor, mas o problema eh q ele 'nao reconhece' essa imagem, ele dah o aviso q a imagem soh pode ser jpg, gif etc... Eh como se nao tivesse enviado nenhuma imagem pro servidor (sendo q jah existe uma img blank.jpg no servidor) mas de qualquer forma vou tentar dar uma revisada novamente no codigo pra ver se encontro alguam soluçao

Vlw ae pelo help :P

#27 _alucard

_alucard

    Turista

  • Usuários
  • 43 posts
  • Sexo:Não informado

Posted 26/07/2005, 20:55

Olha só, já tentei utilizar vários scripts de upload de imagem, e no momento estou utilizando o que a Kessia postou aqui, só que até agora não consegui fazer o upload da imagem para o bd, apenas para a pasta de destino.
Estou desenvolvendo um sistema de cadastro de lojas para um guia online e cada loja deve possuir uma imagem do logo. Consegui configurar tudo certinho o script, só que no bg aparece o campo logo como "0", e na hora de mostrar a imagem de acordo com a loja certa a imagem aparece como quebrada.
Gostaria de saber se alguém poderia me ajudar com isso.
Acredito que o meu problema seja apenas com o envio da imagem para o bd.

Agradeço antecipadamente

----

**EDIT**

Seguinte, consegui descobrir meu erro.
Estava no próprio bd... Foi só alterar o tipo do campo logo pra text que funcionou.

Edição feita por: _alucard, 26/07/2005, 21:20.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq