COMO RETORNAR O TIPO DE ARQUIVO?

MARSOLIM 10/04/2014 11:13:26
#437133
amigos estou tentando validar arquivos tipo imagem e não consegui achar uma forma mais enxuta de fazer isso. o Extension do Getfileinfo só retorna a extensão e não o tipo da imagem. tentei tambem criar um objeto Scripting.FileSystemObject e usar o Type mas tambem está retornando a extensão e não o tipo. se eu pegar uma imagem jpg e alterar a extensão dela para exe esses métodos irão dizer que é um aplicativo e não uma imagem. então estou validando pelo jeito abaixo

        On Error GoTo TErro

Dim eimagem As Boolean = False

Dim I As Image = Image.FromFile([Ô]F:\My files\PS CS5\Samples\Ducky.tif[Ô])

If I.GetType.Name.ToString = [Ô]Bitmap[Ô] Then
eimagem = True
End If

TErro:
If Err.Number = 7 Then
eimagem = False
End If

MsgBox(eimagem)


o problema é que esse método só lê o tipo de imagens e por isso tenho que usar o error para quando for 7, que indica que por ser outro tipo de arquivo dá memória insuficiente, passar o tipo bitmap para false.

o que queria saber é se tem um outro jeito de retornar o tipo de arquivo. muito agradeço.
MARSOLIM 21/04/2014 16:12:09
#437471
e então galera, nadica de nada mesmo por aqui? estou deus desse dia pesquisando e tentando e não acho uma solução. ainda hoje mesmo passei umas horas gugrando essa bagaça em busca de ideias mas nada de nada nadando mesmo hehehe
FILMAN 21/04/2014 18:54:16
#437472
Resposta escolhida
Imports System.IO

Dim arquivo As String = [Ô]F:\My files\PS CS5\Samples\Ducky.tiff[Ô]
Dim extensão As string = Path.GetExtension(arquivo)

Select Case extensao
Case [Ô]tiff[Ô]
MessageBox.Show([Ô]Extensão: [Ô] & extensao)

Case Else
MessageBox([Ô]Não é uma extensão valida[Ô])
End Select


é só um exemplo, portanto adapte no seu código
WEBMASTER 21/04/2014 23:41:26
#437476
é importante separar os conceitos...
Você está querendo achar a extensão de um arquivo ou realmente ler o header do arquivo para saber seu conteúdo binário ?
é importante você deixar claro seu objetivo, se trata-se de pegar a extensão e julgar o que fazer, ou se você quer realmente assegurar o que quer fazer lendo binariamente o arquivo afim de não cometer erros.

O próprio FileSystemObject já oferece métodos prontos para resolver problemas de obter extensão, agora se é conteúdo que você quer determinar realmente a coisa complica bastante.
OCELOT 22/04/2014 08:58:14
#437479
Ou você confia na extensão do arquivo ou você vai ter que saber o formato binário de cada arquivo que precisa identificar, o que torna praticamente impossível reconhecer todos os formatos existentes.

Não existe nada que vá te dizer qual o formato do arquivo independente da extensão, até porque qualquer um pode criar um formato novo de arquivo.
MARSOLIM 22/04/2014 20:53:30
#437510
o que quero é verificar o tipo de arquivo e não a extensão dele, como eu disse no primeiro post do tópico. como eu vou usar imagens de tipos mais comuns como bmp, gif, jpg e tif acredito ser mais simples ler o header do arquivo e validar esses quatro tipos. o problema de verificar a extensão é que se alguem mudar a extensão no nome de um arquivo exe para jpg por exemplo o sistema vai achar que é uma imagem sendo que não é. o método que estou usando e que está no primeiro post desse tópico funciona porque quando não for imagem será gerado um erro e então uso o número desse erro que é o 7 e valido se é ou não imagem. queria entender como ler o header para poder validar outros tipo de arquivos comuns como arquivos do word, do excel, do ppoint...
FILMAN 05/06/2014 22:15:51
#438762
Se o problema foi resolvido, por favor encerre o tópico

Obrigado
MARSOLIM 13/08/2014 14:52:14
#440400
na verdade ainda não consegui algo que resolvesse isso por isso ainda não fechei. esperava que alguem tivesse outra ideia melhor do que o que to usando mas tudo bem. vou deixar mais um pouco aberto e se não surgir nada mais eu fecho.
FILMAN 18/08/2014 21:15:19
#440571
Como você esta fazendo?
MARSOLIM 19/09/2014 12:31:04
#441359
estou fazendo da forma que mencionei no primeiro post.
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas