Ir para o conteúdo
powerPT

Importação de vCard

Mensagens Recomendadas

powerPT    0
powerPT

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
powerPT    0
powerPT

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tiago Salgado    2
Tiago Salgado

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)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
powerPT    0
powerPT

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tiago Salgado    2
Tiago Salgado

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tiago Salgado    2
Tiago Salgado

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
powerPT    0
powerPT

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tiago Salgado    2
Tiago Salgado

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 ?

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade