Fábio Senji

[RESOLVIDO] Abrir Arquivo Variável

4 posts in this topic

Olá. Gostaria de saber se vocês sabem de alguma forma de exibir um arquivo salvo em binário mas de formato variável em Android. Se não houver tal recurso, posso forçar o arquivo a ser sempre formato PDF. Faz sentido isso, né? Salvo em binário na análise do meu banco porém de um formato X, variável, ou estou mal informado? Aceito sugestões.

 

Eis minha situação:

Tenho um webservice que retorna dados no formato tabela (de análise, tabela de banco HFSQL normal), a qual chamei de Mídia, com os campos x, y, z e Arquivo.

Mídia.Arquivo é um campo que o webservice me devolve encriptado com Crypt(Mídia.Arquivo, "", cryptNone, encodeBASE64). Problema é que ele pode ser qualquer coisa que sonhar ser na vida: PDF, imagem, .docx, txt, planilha de Excel... Ou ao menos eu gostaria que pudesse ser.

 

Obrigado novamente

Share this post


Link to post
Share on other sites

Pq vc não cria um segundo campo pra saber o tipo de arquivo e ai na hora de abrir vc lê esse campo antes e carrega conforme.

Exemplo campo TipoArquivo Int

onde 

1.PDF
2.Imagem (JPG, PNG, BMP, GIF, etc)
3.Doc
4.Excel
5.TXT
6...
7...
...

Ai vc trata primeiro o tipo do arquivo e depois carrega no controle apropriado pré definido

SWITCH Midia.TipoArquivo
	CASE 1 // PDF
		oControlePDF = Midia.Arquivo		
		oControlePDF.Visible = True
	CASE 2 // Imagem
		oControleImagem = Midia.Arquivo
		oControleImagem.Visible = True
	...
END

 

2 people like this

Share this post


Link to post
Share on other sites

se tiver a extensão do arquivo pode salvara ele e executar com o app padrão usando o ShellExecute()

1 person likes this

Share this post


Link to post
Share on other sites

Posted (edited)

Esqueci de dizer que, quando receber uma imagem, quero jogar num controle IMG na tela.

Com a ajuda de vcs, tenho feito assim e tem funcionado quase 100%. Contudo se o arquivo não for JPG, BMP, PNG ou PDF, pode haver problemas:

bufMidia = Uncrypt(campo[i].Arquivo,"",cryptNone,encodeBASE64) //aqui pego o arquivo de uma outra variável e salvo em bufMidia

IF Contains(UTF8ToString(bufMidia),"PNG") OR Contains(UTF8ToString(bufMidia),"BMP") OR Contains(UTF8ToString(bufMidia),"JPG") THEN

	//aqui sei que é uma imagem	

	IMG_VerImgMaior = bufMidia

	nStatusMidia = COM_MIDIA_IMAGEM  

ELSE

	//aqui funciona se for PDF ou não houver mídia, segundo testes:	

	fSaveBuffer(CompleteDir(fCurrentDir()) + "PDF.pdf",bufMidia)  //salva o arquivo como se fosse PDF, seja o que for

	IF fSize(CompleteDir(fCurrentDir()) + "PDF.pdf") > 0 THEN

		ShellExecute(CompleteDir(fCurrentDir()) + "PDF.pdf")  //abre PDF. Se for PDF, ok. Caso contrário o PDF reader acusa erro no arquivo

		nStatusMidia = COM_MIDIA_DIFERENTE

	ELSE

		nStatusMidia = SEM_MIDIA  //uso esse flag posteriormente para exibir um STC escrito "Sem mídia"

	END

END

Por fim decidimos usar um campo na tabela mesmo para passar o nome do arquivo com o formato, que ajuda o ShellExecute a saber o formato correto para abrir, chamando o app padrão correto ou a escolha do usuário sobre como abrir.

Obrigado pelas dicas!
[Resolvido]

Edited by Fábio Senji
Adicionar "Resolvido"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now