Jump to content

Importação de vCard


powerPT
 Share

Recommended Posts

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

MD

Link to comment
Share on other 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?

MD

Link to comment
Share on other sites

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 ...  😁 (sua choca desmiolada :P )

Link to comment
Share on other 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  😁 Esta parte penso ser a pior do raio da coisa...

e ó Tiago, stringamos!  :P

MD

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 😄 ahah

Link to comment
Share on other 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

MD

Link to comment
Share on other sites

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 ?

Link to comment
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
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.