Ir para conteúdo
Fórum Script Brasil
  • 0

Upload de Imagens


Aléx Müller

Pergunta

Boa tarde pessoal,

estou com problemas ao fazer upload de imagem com extensões diferentes de .jpeg - gostaria que enviasse .jpg e .png principalmente.

O problema todo é que peguei este projeto pelo meio e não tenho contato com quem montou o sistema.

Vou passar o trecho do código de envio:

//upload imagens

$MaxTam = 1024 * 800;
$destino = 'imagens/';
$aExtensoes = array("jpg","jpeg","png");

if(isset($_FILES["imagenscurso"]))
 { 
  $imagens = $_FILES["imagenscurso"];
   foreach ($imagens['name'] as $chave => $nome_foto)
    {
      if ($imagens['error'][$chave] == 0)
       {
        // Se possui uma extensão válida
         if (in_array(strtolower(substr($nome_foto, strpos($nome_foto, ".") + 1)), $aExtensoes))
         {
          // Informações do arquivo
            $nome = str_replace(" ", "_", $nome_foto);
            $tamanho = $imagens['size'][$chave];
            $tmp = $imagens['tmp_name'][$chave];
            $type = $imagens['type'][$chave];
          
          // Pega extensão da imagem
         preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $nome, $ext);

          // Gera um nome único para a imagem
             $nome_imagem = md5(uniqid(time())) . "." . $ext[1];
          // Se o arquivo existir
            if (!file_exists($destino.$nome_imagem))
             {
             // Verificando o tamanho do arquivo
               if ($tamanho <= $MaxTam)
                {
                 // faz de fato o upload, move para a pasta correta
                    move_uploaded_file($tmp, $destino.$nome_imagem);
            }
             }
         }
       else {echo "Extensão inválida";} 
}   
       $inserir5= "insert into cursoimagens (id_curso, imagem) VALUES('$valuecurso','$nome_imagem')";
       $enviar5 = mysql_query($inserir5, $conecta) or die ("Falha no query". mysql_error());
    }
 }

Obrigado pela Atenção.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Boa tarde pessoal,

estou com problemas ao fazer upload de imagem com extensões diferentes de .jpeg - gostaria que enviasse .jpg e .png principalmente.

O problema todo é que peguei este projeto pelo meio e não tenho contato com quem montou o sistema.

Vou passar o trecho do código de envio:

//upload imagens

$MaxTam = 1024 * 800;
$destino = 'imagens/';
$aExtensoes = array("jpg","jpeg","png");

if(isset($_FILES["imagenscurso"]))
{ 
  $imagens = $_FILES["imagenscurso"];
   foreach ($imagens['name'] as $chave => $nome_foto)
    {
      if ($imagens['error'][$chave] == 0)
       {
        // Se possui uma extensão válida
         if (in_array(strtolower(substr($nome_foto, strpos($nome_foto, ".") + 1)), $aExtensoes))
         {
          // Informações do arquivo
            $nome = str_replace(" ", "_", $nome_foto);
            $tamanho = $imagens['size'][$chave];
            $tmp = $imagens['tmp_name'][$chave];
            $type = $imagens['type'][$chave];
          
          // Pega extensão da imagem
         preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $nome, $ext);

          // Gera um nome único para a imagem
             $nome_imagem = md5(uniqid(time())) . "." . $ext[1];
          // Se o arquivo existir
            if (!file_exists($destino.$nome_imagem))
             {
             // Verificando o tamanho do arquivo
               if ($tamanho <= $MaxTam)
                {
                 // faz de fato o upload, move para a pasta correta
                    move_uploaded_file($tmp, $destino.$nome_imagem);
            }
             }
         }
       else {echo "Extensão inválida";} 
}   
       $inserir5= "insert into cursoimagens (id_curso, imagem) VALUES('$valuecurso','$nome_imagem')";
       $enviar5 = mysql_query($inserir5, $conecta) or die ("Falha no query". mysql_error());
    }
}
Obrigado pela Atenção.
olá tente isso
<?php
//upload imagens

$MaxTam = 1024 * 800;
$destino = 'imagens/';
$aExtensoes = array("JPG","JPEG","PNG");


if(!isset($_FILES["imagenscurso"]))
{
  $imagens = $_FILES["imagenscurso"];
   foreach ($imagens['name'] as $chave => $nome_foto)
    {
      if ($imagens['error'][$chave] == 0)
       {
        // Se possui uma extensão válida
        $ext=array_reverse(explode(".",$nome_foto));

       if (in_array(strtoupper($ext[0]), $aExtensoes)){
          // Informações do arquivo
            $nome = str_replace(" ", "_", $nome_foto);
            $tamanho = $imagens['size'][$chave];
            $tmp = $imagens['tmp_name'][$chave];
            $type = $imagens['type'][$chave];

          // Pega extensão da imagem
        // preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $nome, $ext);
         // mudança para pegar extenção de imagem mais rapido

          // Gera um nome único para a imagem
             $nome_imagem = md5(uniqid(time())) . "." . $ext[0];
          // Se o arquivo existir
            if (!file_exists($destino.$nome_imagem))
             {
             // Verificando o tamanho do arquivo
               if ($tamanho <= $MaxTam)
                {
                 // faz de fato o upload, move para a pasta correta
                    move_uploaded_file($tmp, $destino.$nome_imagem);
            }
             }
         }
       else {echo "Extensão inválida";}
}
       $inserir5= "insert into cursoimagens (id_curso, imagem) VALUES('$valuecurso','$nome_imagem')";
       $enviar5 = mysql_query($inserir5, $conecta) or die ("Falha no query". mysql_error());
    }
}

qualquer erro, poste o erro, até mais.

Link para o comentário
Compartilhar em outros sites

  • 0

Acabei descobrindo um detalhe de JavaScript que com certeza está fazendo a diferença, não tendo nada de errado no PHP possívelmente.

Peço a gentileza de movermos este tópico ao Javascript, por favor!

===========================================

Considerando o código em JavaScript que faz a validação do envio de imagens e nele contém somente a extensão .jpeg (precisaria de .jpg e .png também)

Segue o código de validação em .js:

var filtro_texto = /^(.+\.jpeg)$/ 
     if (!filtro_texto.test(d.imagenscurso.value) || d.imagenscurso.value=="") 
       {
        alert("Seu arquivo deve ser do tipo .jpeg ou o campo esta em branco!");
        d.imagenscurso.focus();
          return false;
       }

Na Primeira linha ele tem a extensão, mas não consegui colocar as demais.

Agradeço a atenção dispensada pelo amigo rickayron e de quem puder me ajudar.

Link para o comentário
Compartilhar em outros sites

  • 0

vini_loock, obrigado pela atenção.

Separe as extensões por '|' na sua ereg:

var filtro_texto = /^.+\.(jpeg|png|gif)$/

Isso me permitiu fazer o envio do formulário, mas a imagem não teve o link inserido no banco e nem foi pra pasta.

O que poderia estar acontecendo?

Grato.

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, a pasta existe, está com permissões corretas, está em funcionamento o sistema, mas apenas com o .jpeg, onde estou enviando as imagens normalmente.

Quanto aos if, desculpe, mas não compreendi o que fazer.

Só preciso das outras extensões para abrir o formulário publicamente sem ter que pedir ao publico para renomear extensões.

Obrigado pela atenção...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...