
Descobrir E Pegar A Extenção...
#1
Posted 04/12/2005, 13:47
to tentando pensar como fazer isto, tenho amis ou menos na mente, mas vamos lá ver se alguem te idéia melhor.
eu tenho em um diretório os seguintes arquivos...
[PASTA]
- 1.zip
- 23.zip
- 44.html
- 213.tar.gz
- 347.txt
bem é só um exemplo, mas é mais ou menos assim cada pasta, então quero fazer o seguinte o script vai chamar o arquivo 23 por exemplo, só que nãos e sabe qual é a extenção deste arquivo então quero o seguinte o script verifica qual a extenção do arquivo 23 (lembrando que não haverá numeros repetidos ou seja só existira um 23, só que não sabe-se ainda a extenção dele, eu quero que o script descubrar qual é a extenção do arquivo 23, para saber se é .zip, .html, .tar.gz e assim por diante e adicione ai arquivo.
ou seja depois que ele descobrir qual é a extenção deste arquivo ele complete para que eu possa dar a url para o usuário baixar o arquivo ficando 23.zip sakou?
ta meio confuso né galera, veja mais ou menos o que pensei.
if(file_exists("$id.zip")){
$arquivo = $id.zip";
}elseif(file_exists("$id.html")){
$arquivo = $id.html";
}elseif(file_exists("$id.tar.gz")){
$arquivo = $id.tar.gz";
}elseif(file_exists("$id.txt")){
$arquivo = $id.txt";
}
acho que assim daria certo, mas eu quero mais uma coisa, ao identificar a extenção eu quero que ele pegue o nome desta extenção apra eu chamar a imagem da extenção tipo se foi .zip a extenção ele vai chamar a imagem zip.jpg da pra entender...
ai acho que eu teria que usar o explode é isto?
alguem tem uma idéia melhor que a minha por ai? ou um modo mais simples?
#2
Posted 04/12/2005, 15:08

explode() seria uma solução, porém, uma solução "tosca". A melhor solução para teu caso é esta:
<?php $caminho = './diretorio/arquivo.extensao'; $extensao = pathinfo($caminho, PATHINFO_EXTENSION); ?>[]’s

#3
Posted 04/12/2005, 22:48
com este comando eu vou conseguir saber qual a extenção de um arquivo coocando apenas o nome dele?
e depois paraselecionar a imagem da extenção?
lembre eu não sei a extenção do arquivo, pis irei identifica-lo pelo id dele no banco de dados.
ou seja sei que quero o arquivo X que ta na pasta y só que não sei a extenção do X e depois de saber quero que ele pegue a extenção que for o arquivo , ou sejatudo que vem após o ponto doarquivo X e nomea-lo como ext.jpg
pensei nisto aki.
f(file_exists("$id.zip")){
$arquivo = $id.zip";
$imagem = "zip.jpg";
}elseif(file_exists("$id.html")){
$arquivo = $id.html";
$imagem = "html.jpg";
}elseif(file_exists("$id.tar.gz")){
$arquivo = $id.tar.gz";
$imagem = "tar.gz.jpg";
}elseif(file_exists("$id.txt")){
$arquivo = $id.txt";
$imagem = "txt.jpg";
}
desculpe não ter usado a pesquisa, novamente mas agora que vi qual o comando que utilizou path_info, vou verificar no manual do php.
vlws!!!
#4
Posted 04/12/2005, 23:22
fiz assim e deu certinho, se alguem tiver uma maneira mais leve de fazer o que quero agradeço..
<?php
if(file_exists("$id.zip")){
$arquivo = "$id.zip";
$imagem = "zip.jpg";
}elseif(file_exists("$id.html")){
$arquivo = "$id.html";
$imagem = "html.jpg";
}elseif(file_exists("$id.tar.gz")){
$arquivo = "$id.tar.gz";
$imagem = "tar.gz.jpg";
}elseif(file_exists("$id.txt")){
$arquivo = "$id.txt";
$imagem = "txt.jpg";
}
?>
t+
#5
Posted 05/12/2005, 06:47
e faça "TESTES"
qualquer coisa use o EXPLODE
<? $Arquivo = 'imagem.jpg'; $Separ = explode('.',$Arquivo); echo "Nome da imagem é : ".$Separ[0]."<br>"; echo "Extenção da imagem é : ".$Separ[1]."<br><br>"; echo "Arquivo: ".$Arquivo; ?>
T+
PALMEIRAS - Primeiro campeão do mundo em 1951
#6
Posted 05/12/2005, 18:25
Isso que você colocou ai eu sei fazer, lei atentamente apra ver o que quero fazer.
vou tentar explicar dnovo.
sei que o arquivo que eu quero ta na pasta X
dentro desta pasta X eu tenho os seguintes arquivos por exemplo
10.zip
25.zip
35.html
130.tar.gz
bem fiz um sistema que vai baixar para o usuário o arquivo 10, só que no sistema eu só tenho o nome do arquivo, sei q quero o arquivo 10, más não sei a extenção dele , ou seja sei apenas que o nome dele é 10 e esta na pasta X.
portanto ele pode ser .zip, .html, .tar.gz e assim por diante.
o que quero é ele descobrir qual a extensão do arquivo 10 que ta na pasta X.
compreendeu agora o que quero? sei que é meio complicato, más de uma olhada no que fiz para resolver isso no post acima que acho que irá ajudar a compreender o que to tentando fazer de modo mais leve.
t+
#7
Posted 05/12/2005, 18:57
Re: ler o mime type
publicado por Felipe Lopes (usuário autenticado) - 2003-12-23 11:34:05
O melhor jeito de se ver a extensão de um arquivo eh usando a seguinte variavel
$_FILES['arquivo'][type]
Isso retorna o MIME type do arquivo. Ex: image/jpg
#8
Posted 05/12/2005, 18:57
Re: ler o mime type
publicado por Felipe Lopes (usuário autenticado) - 2003-12-23 11:34:05
O melhor jeito de se ver a extensão de um arquivo eh usando a seguinte variavel
$_FILES['arquivo'][type]
Isso retorna o MIME type do arquivo. Ex: image/jpg
#9
Posted 06/12/2005, 16:34
bem ja resolvi isto, se quizer pode fechar o tópico.
resolvi da seguinte maneira:
<?php
if(file_exists("$id.zip")){
$arquivo = "$id.zip";
$imagem = "zip.jpg";
}elseif(file_exists("$id.html")){
$arquivo = "$id.html";
$imagem = "html.jpg";
}elseif(file_exists("$id.tar.gz")){
$arquivo = "$id.tar.gz";
$imagem = "tar.gz.jpg";
}elseif(file_exists("$id.tar")){
$arquivo = "$id.tar";
$imagem = "tar.jpg";
}elseif(file_exists("$id.txt")){
$arquivo = "$id.txt";
$imagem = "txt.jpg";
}
?>
flws!!!
#10
Posted 06/12/2005, 19:28
Da pra fazer isso de outra forma...
Use glob() para varrer a pasta, em cada arquivo listado(eles viram em array() ) voce vai passar um substr() pegando as ultimos tres caracteres e depois use o echo() pra imprimir(claro

Exemplo:
foreach(glob("imagens/*.*") as $arquivo){ $nome = substr($arquivo, -3); echo $nome."\n"; }Acho que seria isso mesmo
Falopa!
#11
Posted 07/12/2005, 00:18
hehe, kra essa ta dificil ainda não é isto mas obrigado enquanto ninguem diz uma maneira mais leve vou usando as sentenças acima hehe.Não sei se entendi direito mas...
Da pra fazer isso de outra forma...
Use glob() para varrer a pasta, em cada arquivo listado(eles viram em array() ) voce vai passar um substr() pegando as ultimos tres caracteres e depois use o echo() pra imprimir(claro)
Exemplo:foreach(glob("imagens/*.*") as $arquivo){ $nome = substr($arquivo, -3); echo $nome."\n"; }Acho que seria isso mesmo
Falopa!
claro que com esa ai também dava para fazer, mas ficaria mais complexa que a maneira que achei...
#12
Posted 07/12/2005, 00:47
A única coisa que eu implementaria neste caso seria o nome do arquivo.Não sei se entendi direito mas...
Da pra fazer isso de outra forma...
Use glob() para varrer a pasta, em cada arquivo listado(eles viram em array() ) voce vai passar um substr() pegando as ultimos tres caracteres e depois use o echo() pra imprimir(claro)
Exemplo:foreach(glob("imagens/*.*") as $arquivo){ $nome = substr($arquivo, -3); echo $nome."\n"; }Acho que seria isso mesmo
Falopa!

Como ele já sabe o nome do arquivo, basta usar nome_do_arquivo.* (curinga). Assim, a busca fica bem mais rápida e funcional.

Sendo assim, tendo apenas 1 arquivo com este nome, não importando sua extensão, ficaria fácil de achá-la (extensão).

Veja:
<?php $file_ext = pathinfo(end(glob('./diretorio/nome_do_arquivo.*', GLOB_BRACE)), PATHINFO_EXTENSION); ?>[]’s

#13
Posted 07/12/2005, 10:02
eu so tava dando um exemplo tanto que nem usei o modo GLOB_BRACE...
Bom toda forma eu nem tinha pensado em passar esta teoria pra ele... mas ta ai agora hehe
Falopa!
#14
Posted 08/12/2005, 15:38
vo testar este ai acima e ver no que da.
vlws...

#15
Posted 08/12/2005, 15:58
veja só.
fiz o seguinte teste.
o arquivo 164.tar.gz
indiquei somente o numero dele ai envez dele mostrar a extensão .tat.gz ele mostrou apenas gz
ja os outros arquivos ele mostra normal.
acho que agora então a melhor maneira seria esta.
<?php
if(file_exists("$id.tar.gz")){
$extensao = "tar.gz";
}else{
$extensao = pathinfo(end(glob('$id.*', GLOB_BRACE)), PATHINFO_EXTENSION);
}
echo "A extenção do arquivo é: $extensao";
?>
ou será que existe outra forma?
vi um caso semelhante eno manual
http://br.php.net/ma...on.pathinfo.php
tem lá nos comentarios uma pessoa falando se o arquivo for tar.gz que ele mostra apenas gz
"If a file has more than one 'file extension' (seperated by periods), the last one will be returned.
For example:
<?php
$pathinfo = pathinfo('/dir/test.tar.gz');
echo 'Extension: '.$pathinfo['extension'];
?>
will produce:
Extension: gz
and not tar.gz "
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)