Ir para conteúdo

POWERED BY:

Arquivado

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

visitante_xp

[Resolvido] Extensão de arquivos...

Recommended Posts

Fala galerinha marota...^^

 

Seguinte, to mexendo com um sistema de upload e precisava colocar um "controle de extensões". Começei fazendo controle por arquivos em PDF. Para obter a "estensão" do aquivo dei um echo em $_FILES['arquivo']['type'] e fiz uma condição. Até ai beleza mas para certos tipos de arquivos o nome da extensão fica "meio" grande.

 

Existe alguma forma de fazer o controle pela terminação do nome? Tipo .txt, .jpg, .doc, .pdf ???

 

Abraço!!!...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Do valor $_FILES['arquivo']['name'] Faça um substr - 5, de um explode por (.) ponto e então pegue a segunda posição do array

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nylson, isso se chama gambiarra. Fazendo isso um arquivo .torrent seria interpretado pelo PHP como tendo a extensão .to.

Veja como o Evandro disse que é melhor.

 

Não sei o que você entende por gambiarra, ou por solução, mas o que eu fiz foi ISOLAR a área de corte, para explodir e ter uma área menor, não preciso da string inteira, pois ele quer arquivos em especifico, de qualquer forma na comparação iria falhar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nylson, creio que a intenção do colega @André D. Molin não foi a de ofender.

 

Quando postamos sugestões no fórum, prezamos primeiro pela que seja mais prática, ou simples. No caso, a solução apresentada por mim resolve o problema, veja:

 

$meuarquivo = "apresentacao_de_slides_para_entregar_segunda_feira.pptx";

$partes = explode('.',$meuarquivo);
/* Retorno:

   array(
       'apresentacao_de_slides_para_entregar_segunda_feira',
       'pptx'
   );

*/

$extensao = $partes[sizeof($partes)-1];

 

Quando existem outras soluções possíveis (note que para tudo na vida existem N formas variáveis de se resolver um mesmo problema), podemos debater - desde que sadiamente - e procurar encontrar um consenso entre as partes sobre qual solução aparenta ser a mais plausível, respeitando o ponto de vista de outrem.

 

Se formos analisar o ponto de vista recursos de sistema a sua solução ocupa menos memória em determinados casos:

 

apresentacao.de.slides.para.entregar.segunda.feira.pptx

A minha solução, criaria um array de 8 posições, totalmente desnecessário, quando a sua solução cria uma variável com a terminação e uma segunda variável contendo um array de 2 pontos apenas.

 

Porém venho questionar dois cenários:

 

1

Faça um substr - 5, de um explode por (.) ponto ...

Se estivermos, por exemplo, manipulando arquivos de classes Java (.class), não haveria explosão, uma vez que substr() -5 retornaria a string "class" não existindo ponto.

 

2

então pegue a segunda posição do array

meu.trabalho.de.linguagem.c.para.entregar.segunda.variacao.b.c

 

substr() -5 nos retorna "o.b.c"

 

explode nos retorna

array('o','b','c')

pegar a segunda posição do array nos retorna

 

string(1)"b"

 

Como alternativa, podemos utilizar um combo de substr com strrpos

 

resolvendo o nosso problema criando apenas UMA variável, independente de estarmos trabalhando com arquivos .class, .c, ou sem extensões, porém ocultos, como por exemplo .htaccess

 

substr($arquivo,strrpos($arquivo,'.')+1);

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.