• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

powerPT

Importação de vCard

9 mensagens neste tópico

Viva!

Alguém já consegui importar um vCard para SQL Server? O código será em C# (web), exportar acho que tenho a solução agora importar para guardar em SQL server é que me estou a ver "grego"!  :-[

EDIT: explicando melhor, tenho uma tabela com por exemplo os campos nome, morada, telemovel. Eu quero fazer algo a nivel de web para importar um vCard e guardar nos respectivos campos da tabela

Desde já obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já desenvolvi algum tipo de validações neste script e portanto avançando...

Como vCard é plain text, a minha ideia é: upload do ficheiro vCard, guardar numa pasta temporária e pronto, ler xpto linhas... Estou no bom sentido ou até existe uma outra maneira mais simples?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, não sei se consideras mais fácil ou não, mas escusas de guardar o ficheiro numa pasta temporária. Podes carrega-lo logo num Stream e depois aí fazes a manipulação interna.

Tens por exemplo o formulário para fazer upload do ficheiro...

<form name="form" action="" runat="server">
<input type="file" id="up_file" runat="server">
</form>

Depois no botão pra fazer upload ( evento click ) tens que carregar o ficheiro em stream, e depois usas o StreamReader para sacares as informações.

exemplo:

string fich = System.IO.Path.GetFileName(up_file.PostedFile.FileName);
Stream st = up_file.PostedFile.InputStream;
StreamReader sr = new StreamReader(st);

Response.Write(sr.ReadToEnd());
st.Close();

É algo assim do genero ... Qualquer dúvida ja sabes ...  :cheesygrin: (sua choca desmiolada :P)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já com o file temporário tinha arrumado a coisa mas realmente assim com o file em stream é mais simples, o pior é para o que vem a seguir, ou seja, sacar a info do vCard para variáveis, já não vou poder ler linha a linha pois com o stream fica tudo junto.  :wallbash:

Por exemplo:

no vCard tem:

TEL;WORK;VOICE:598213568

URL;WORK:http://www.portugal-a-programar.org

EMAIL;PREF;INTERNET:xpto@gmail.com

quero agora sacar a info para variáveis, ficando:

String telem = "598213568";

String site = "http://www.portugal-a-programar.org";

String email = "xpto@gmail.com";

Fui muito claro  :biggrin: Esta parte penso ser a pior do raio da coisa...

e ó Tiago, stringamos!  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Claro que consegues ler linha a linha.

string fich = System.IO.Path.GetFileName(up_file.PostedFile.FileName);
Stream st = up_file.PostedFile.InputStream;
StreamReader sr = new StreamReader(st);
string str = "";
While(!sr.EndOfStream)
{
str += sr.ReadLine() + "<br />";
}

Response.Write(str);

ora ve lá se não te le isso linha a linha  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Até aí tudo bem, agora o pior é o que disse no anterior post  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pah, isso agora é uma questão de tratamento de strings... mtos substring e indexof, mais umas manhosisses pelo meio e pronto ...

Fazes o seguinte, preenches os campos no vCard que vais usar pra gravar na BD, e depois é só fazeres o split disso ...ou entao usares os tais substrings e indexofs :P

Vah, vai lá tentando que depois aqui o pai ajuda :D ahah

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois era nisso que eu pensava mas vai ser complicado vai...é que os vCards vão diferir uns dos outros, uns com mais info, outros com menos...enfim, vamos lá ver o que sai daqui :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pah, mas isso não interessa os vCards terem mais info uns que os outros. Imagina o seguinte caso:

vCard 1

NAME;Manel

IDADE;18

EMAIL;manel@lala.com

vCard 2

NAME;Joana

IDADE;21

EMAIL;joana@lala.com

MORADA:Rua do Coiso

Tu tens um numero fixo de campos na BD que vais ter que preencher com informações do vCard...

Campos da BD

ID | Nome | Idade | Email | Morada

Pronto...tens aqui a tua tabela da BD, agora pra preenche-la com os dados do vCard fazes do tipo


try {
extrair string nome
adicionar o parametro pro SP
}
catch { 
adicionar o parametro pro SP ( null )
}

try {
extrair int idade
adicionar o parametro pro SP
}
catch { 
adicionar o parametro pro SP ( null )
}

try {
extrair string email
adicionar o parametro pro SP
}
catch { 
adicionar o parametro pro SP ( null )
}

try {
extrair string morada
adicionar o parametro pro SP
}
catch { 
adicionar o parametro pro SP ( null )
}

Pah, é +/- isto que precisas de fazer ... fazes o código para um caso em que tenha todos os campos, caso ele passe para o Catch, passa o parametro como null (atenção é na BD para aceitar nulls no campo)

Tas a ver a ideia ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora