Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Joffre Mota

Usar ShowFileDialog e OpenFileDialog

Recommended Posts

Olá a todos.

 

Estou trabalhando em uma funcionalidade que requer o envio de um arquivo PDF para o banco de dados. Trabalho com banco MySql e C# no Visual Studio 2010.

 

A parte de enviar o tal arquivo para o banco já resolvi. Relativamente sem problemas.

 

O problema agora é pegar o arquivo de volta. Será que alguém poderia dar uma força em como utilizar o OpenFileDialog para tal fim?

 

Apenas para deixar salvo no fórum para o caso de alguém querer usar depois, abaixo o código para salvar o arquivo no BD.

 

// Código para pesquisar o arquivo no computador

        private void btnPesquisarArquivo_Click(object sender, EventArgs e)
       {
           OpenFileDialog dlg = new OpenFileDialog();
           dlg.InitialDirectory = @"C:\";
           dlg.Title = "Selecione o(s) arquivo(s)";
           dlg.DefaultExt = "pdf";
           dlg.Filter = "PDF Files (*.pdf) | *.pdf|ZIP Files(*.zip)|*.zip";
           dlg.CheckPathExists = true;
           dlg.CheckFileExists = true;
           dlg.Multiselect = false;
           dlg.ReadOnlyChecked = true;

           if (dlg.ShowDialog() == DialogResult.OK)
           {
               try
               {
                   txtCaminhoArquivo.Text = dlg.FileName;
                   arquivoPdf = GetArquivo(txtCaminhoArquivo.Text);
               }
               catch (Exception ex)
               {
                   MessageBox.Show("Falha ao selecionar o arquivo: " +ex.ToString(), "Falha!", MessageBoxButtons.OK, MessageBoxIcon.Error);
               } 
           }
       }

 

// Método GetArquivo responsável por converter o PDF em um array de bytes

        private byte[] GetArquivo(String caminhoArquivo)
       {
           FileStream fs = new FileStream(caminhoArquivo, FileMode.Open, FileAccess.Read);
           BinaryReader br = new BinaryReader(fs);
           byte[] arquivo = br.ReadBytes((int)fs.Length);
           br.Close();
           fs.Close();
           return arquivo;
       }

 

// Evento Click do botão Salvar

        private void btnSalvar_Click(object sender, EventArgs e)
       {
           String msg = "";
           Boolean sucesso = false;

           try
           {
               EN_Laudo enLaudo = new EN_Laudo(0, 0, "", arquivoPdf);
               bll_Laudo.Incluir(enLaudo, ref sucesso, ref msg);
               MessageBox.Show(msg.ToString(), "Sucesso!", MessageBoxButtons.OK, MessageBoxIcon.Information);
           } 
           catch (Exception ex)
           {
               MessageBox.Show("Falha ao salvar o registro: " + ex.ToString());
           }
       }

 

// Como não há regras de negócio, vou colocar direto o método Salvar da classe DAL_Laudo. O método Incluir da classe BLL_Laudo apenas chama o método abaixo

        public void Incluir(EN_Laudo en_Laudo)
       {
           MySqlConnection conn = bd.conexao();

           try
           {
               String sql;
               sql = "INSERT INTO laudos (arquivo) VALUES (?arquivo)";

               MySqlCommand cmd = new MySqlCommand(sql, conn);

               cmd.Parameters.Add("arquivo", MySqlDbType.LongBlob).Value = en_Laudo.arquivo;

               conn.Open();

               cmd.ExecuteNonQuery();
           }
           catch (MySqlException ex)
           {
               throw ex;
           }
           finally
           {
               conn.Close();
           }
       }

 

Espero que alguém possa me ajudar com minha dúvida.

Se tiverem dúvida no código acima ficarei feliz em saná-las.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só não entendi por que quer usar o OpenFileDialog para isso. Acho que terá que criar um botão simples para exibir este arquivo.

 

Abraços...

 

Bom dia quintelab.

 

Não sei exatamente como fazer o que estou querendo. Penso em fazer uma DataGridView, sendo que a última coluna será um Button ou LinkLabel, que me permitirá baixar o arquivo referente àquele registro.

 

Mas não tenho idéia de como fazê-lo, nem se é possível.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acredito que o OFD seja desnecessário, pois uma vez que você tem seu PDF salvo no BD a unica coisa que você precisa fazer é abrir ele de novo, coisa que você pode fazer apenas programando o próprio DGV para que quando um duplo clique fosse dado na célula do PDF ele exibiria um leitor (Caso você esteja usando o ItextSharp acredito que ele tenha um modulo de leitura do Acrobat) em um form que leria o registro normalmente.

 

Em outras palavras, você fez a ida, e agora precisa fazer o que ja tinha feito, só que ao contrario.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acredito que o OFD seja desnecessário, pois uma vez que você tem seu PDF salvo no BD a unica coisa que você precisa fazer é abrir ele de novo, coisa que você pode fazer apenas programando o próprio DGV para que quando um duplo clique fosse dado na célula do PDF ele exibiria um leitor (Caso você esteja usando o ItextSharp acredito que ele tenha um modulo de leitura do Acrobat) em um form que leria o registro normalmente.

 

Em outras palavras, você fez a ida, e agora precisa fazer o que ja tinha feito, só que ao contrario.

 

Entendi a idéia. Vou tentar implementar.

 

Obs.: o que seria ITextSharp? Oo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.