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

Preg_match


Carlos Rocha

Pergunta

Ola pessoal,

Estou começando a me preparar para fazer uploads de varias imagens com patch no Banco mas estou me travando na verificação da extensão.

O que eu queria era ver se na matriz (array) do campo file que envia "n" fotos ( ou imagens), há extensões validas.

Ou seja, Se o aqruivo que enviei tem extensão valida.

No (pequeno) script que estou fazendo poara teste, só passa a extensão gif. Png, jpg e jpeg não passam.

Será que estou fazendo errado?

<form action="tt.php" method="post"  enctype="multipart/form-data">
<b>Envio das fotos</b><br />
<input type="file" name="fotos[]"><br />
<input type="submit" value="OK"/>
</form>

<?
$Fotos = $_FILES['fotos'];
//$Fotos = isset($_FILES["fotos"]) ? $_FILES["fotos"] : FALSE;
for($i = 0; $i < sizeof($Fotos['name']); $i++) {
    
    $Nome    = $Fotos['name'][$i];
    $Tamanho = $Fotos['size'][$i];
    $Tipo    = $Fotos['type'][$i];
    $Tmpname = $Fotos['tmp_name'][$i];
    
print $Nome."<br>";
print $Tamanho."<br>";
print $Tipo."<br>";
print $Tmpname."<p>";

print preg_match('/^image\/(gif|jpeg|jpg|png)$/', $Tipo)."<br>";

preg_match('/^image\/(gif|jpeg|jpg|png)$/', $Tipo, $Ext)."<br>";

print $Ext[1]."<br>";

if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$",$Ext[1]))
    {
        print "Ok";
    }
    else {        
        print "iiiiiii"; 
          }
                                            } //FIM DO FOR
?>

Editado por Carlos Rocha
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Bom, descobri parte do erro.

Porem agora preciso usar a função mas o resultado é a criação de um arquivo sem extensão e nem pasta é.

O que será que esta errado:

<form action="tt.php" method="post"  enctype="multipart/form-data">
<b>Envio das fotos</b><br />
<input type="file" name="fotos[]"><br />
<input name="MAX_FILE_SIZE" type="hidden" value="1">
<input type="submit" value="OK"/>
</form>

<?
$dir="img/";
$Fotos = $_FILES['fotos'];
//$Fotos = isset($_FILES["fotos"]) ? $_FILES["fotos"] : FALSE;
for($i = 0; $i < sizeof($Fotos['name']); $i++){
    
    $Nome    = $Fotos['name'][$i];
    $Tamanho = $Fotos['size'][$i];
    $Tipo    = $Fotos['type'][$i];
    $Tmpname = $Fotos['tmp_name'][$i];
///////////////////////    
print $Nome."<br>";
print $Tamanho."<br>";
print $Tipo."<br>";
print $Tmpname."<p>";
//////////////////////////
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$",  $Fotos['type']))
        {
            echo "OPA"."<br>";
            echo $Fotos['type'][$i]."<br>";
        }
else    {        
        echo "IIIIIIIIII"."<br>";
            echo $Fotos['type'][$i]."<br>";
        }
//////////////////////////
           $Caminho = $dir . $Nome;
            print $Caminho."<br>";

            if(move_uploaded_file($Tmpname, $Caminho))            
            {
                echo 'Foto #' . ($i+1) . ' enviada.<br/>';
                
                // Faz contagem de enviada com sucesso
                $Conta++;
            }            
            else // Erro no envio
            {
                // $i+1 porque $i começa em zero
                echo 'Não foi possível enviar a foto #' . ($i+1) . '<br/>';
            }


                                          } //FIM DO FOR
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Nova situação agora.

Mesmo usando no script abaixo as funções Copy ou move_uploadedfiles, tanto faz, o resultado é o mesmo.

Só da certo se eu colocar apenas o nome da imagem.

Caso eu coloque o nome do diretório que quero colocar a imagem ai não faz o upload.

Segue:

<form action="tt.php" method="post"  enctype="multipart/form-data">
<b>Envio das fotos</b><br />
<input type="file" name="fotos[]"><br />
<input type="submit" value="OK"/>
</form>

<?
$dir="img/";
$Fotos = $_FILES['fotos'];
//$Fotos = isset($_FILES["fotos"]) ? $_FILES["fotos"] : FALSE;
for($i = 0; $i < sizeof($Fotos['name']); $i++){
    
    $Nome    = $Fotos['name'][$i];
    $Tamanho = $Fotos['size'][$i];
    $Tipo    = $Fotos['type'][$i];
    $Tmpname = $Fotos['tmp_name'][$i];
//////////////////////////
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$",  $Fotos['type']))
        {
            if(copy($Tmpname, $Nome)) // aqui, se eu colocar a variavel $Caminho o upload não vai.            
            //if(move_uploaded_file($Tmpname, $Nome))            
            {
                echo 'Foto #' . ($i+1) . ' enviada.<br/>';
                
                // Faz contagem de enviada com sucesso
                $Conta++;
            }            
            else // Erro no envio
            {
                echo 'Não foi possível enviar a foto #' . ($i+1) . '<br/>';
            }
        }
else    {        
        echo "Erro";
        }
                                          } //FIM DO FOR
?>
image/gif
img/Fim de Ano (6).gif
img/
gif
Fim de Ano (6).gif
C:\Windows\Temp\phpD12B.tmp

Link para o comentário
Compartilhar em outros sites

  • 0

Bom pesoal.

Consegui resolvar parte do problema.

Agora, gostaria de pedir voces que ohasse por favor o script abaixo onde, na hora que chega o momento de gera uma miniaturta da imagem enviada por upload, ai dá o seguinte erro :

Warning: imagecreatefromjpeg(/tmp/phpfcthJD) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/dinamica/public_html/teste_upload/Multiplos_Uploads.php on line 51
Esis o código
<b>Envio das fotos</b><br />

<form action="Multiplos_Uploads.php" method="post"  enctype="multipart/form-data">
<input type="file" name="fotos[]"><br />
<input type="file" name="fotos[]"><br />
<input type="file" name="fotos[]"><br />
<input type="submit" value="OK"/>
</form>

<?
$dir="teste_upload/normal/";
$dir_mini="teste_upload/mini/";
$Fotos = $_FILES['fotos'];
//$Fotos = isset($_FILES["fotos"]) ? $_FILES["fotos"] : FALSE;
for($i = 0; $i < sizeof($Fotos['name']); $i++){
    
    $Nome    = $Fotos['name'][$i];
    $Tamanho = $Fotos['size'][$i];
    $Tipo    = $Fotos['type'][$i];
    $Tmpname = $Fotos['tmp_name'][$i];
    $Caminho = $dir . $Nome;
    $Caminho_mini = $dir_mini . $Nome;    
    if (!$Nome) { 
                  echo 'Você não enviou nada na posição' . ($i+1) . '<br/>';
                 }
    else         {             
                    if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $Tipo))
                            {
                    
                            echo 'O arquivo ' . ($i+1) . ' não é um arquivo válido.<br/>';
                                    
                                    // Faz contagem de enviada com sucesso
                                    $Conta++;
                            }
                    else    {        
                                if(move_uploaded_file($Tmpname, $Caminho))            
                                {
                                    echo 'Foto ' . ($i+1) . ' enviada.<br/>';
                                    // Faz contagem de enviada com sucesso
                                   $Conta++;
                                    ///cria a miniatura e faz io move_uploaded_file
                                                      
                                      //IMAGEM A SER ABERTA
                                      $imagem = $Tmpname; 
                                      
                                      //NOME DO ARQUIVO DA MINIATURA Igual o nome da original
                                      $imagem_gerada = $Nome;
                                      
                                      //CRIA UMA NOVA IMAGEM
                                      $imagem_orig = ImageCreateFromJPEG($imagem);
                                      //LARGURA
                                      $pontoX = ImagesX($imagem_orig);
                                      //ALTURA
                                      $pontoY = ImagesY($imagem_orig); 
                                      
                                      //DEFINE OS PARÂMETROS DA MINIATURA
                                      $largura = 150;
                                      $altura = ($pontoY * $largura) / $pontoX;
                                      
                                      //CRIA O THUMBNAIL
                                      $imagem_fin = ImageCreateTrueColor($largura, $altura); 
                                      
                                      //COPIA A IMAGEM ORIGINAL PARA DENTRO
                                      ImageCopyResampled($imagem_fin, $imagem_orig, 0, 0, 0, 0, $largura+1, $altura+1, $pontoX, $pontoY); 
                                      
                                      //SALVA A IMAGEM
                                      ImageJPEG($imagem_fin, "$dir_mini/".$imagem_gerada,100); 
                                      
                                      //LIBERA A MEMÓRIA
                                      ImageDestroy($imagem_orig);
                                      ImageDestroy($imagem_fin);

                                  }            
                                  else // Erro no envio
                                  {
                                      echo 'Não foi possível enviar a foto' . ($i+1) . '<br/>';
                                  }
                            }
                  }
                                          } //FIM DO FOR
?>

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
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...