Jump to content
Fórum Script Brasil
  • 0

Upload de Imagens


Aléx Müller

Question

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 to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...