Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
Carregando comentários...