gravar arquivos em *.pdf no BD e depois disponilizar para download... - C# WindownsFormApllication
preciso criar um meio de gravar arquivos em *.pdf para serem importados para o banco e disponibilizados para os clientes efetuarem o download através de uma aplicação desktop(Windowns Form)
Estou tentando fazer mas so acho exemplos em .asp net, sera que é possivel fazer atraves do windowns form?
alguem tem alguma dica ?
Estou tentando fazer mas so acho exemplos em .asp net, sera que é possivel fazer atraves do windowns form?
alguem tem alguma dica ?
Elisangela Silva
Curtidas 1
Melhor post
Edson Oliveira
28/08/2012
Acho que isso resolve seu problema
Escrevendo no banco de dados
Lendo do banco de dados
Escrevendo no banco de dados
StreamReader oStreamReader = new StreamReader(@"file.pdf"); byte[] buffer = new byte[oStreamReader.BaseStream.Length]; oStreamReader.BaseStream.Read(buffer, 0, buffer.Length); oStreamReader.Close(); oStreamReader.Dispose(); SqlConnection oSqlConnection = new SqlConnection(@"connectionString"); oSqlConnection.Open(); SqlCommand oSqlCommand = new SqlCommand(); oSqlCommand.Connection = oSqlConnection; oSqlCommand.CommandText = "INSERT INTO tbArquivo(Arquivo) VALUES(@Arquivo);"; oSqlCommand.CommandType = CommandType.Text; SqlParameter oSqlParameter = new SqlParameter(); oSqlParameter.ParameterName = "@Arquivo"; oSqlParameter.SqlDbType = SqlDbType.Image; oSqlParameter.SourceColumn = "Arquivo"; oSqlParameter.Value = buffer; oSqlCommand.Parameters.Add(oSqlParameter); oSqlCommand.ExecuteNonQuery(); oSqlConnection.Close();
Lendo do banco de dados
SqlConnection oSqlConnection = new SqlConnection(@"connectionString"); oSqlConnection.Open(); SqlCommand oSqlCommand = new SqlCommand(); oSqlCommand.Connection = oSqlConnection; oSqlCommand.CommandText = "SELECT Arquivo FROM tbArquivo Where Id = 1;"; oSqlCommand.CommandType = CommandType.Text; SqlDataReader oSqlDataReader = oSqlCommand.ExecuteReader(); byte[] buffer = null; if (oSqlDataReader.Read()) { buffer = (byte[])oSqlDataReader.GetValue(0); } oSqlConnection.Close(); StreamWriter oStreamWriter = new StreamWriter(@"C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf"); oStreamWriter.BaseStream.Write(buffer, 0, buffer.Length); oStreamWriter.Close(); oStreamWriter.Dispose();
GOSTEI 3
Mais Respostas
Pjava
27/08/2012
Posso estar enganado, mas é uma gravação normal, como qualquer outro tipo de campo. Um simples insert. O que deve ser levado em consideração é o tipo no BD, que deve ser um tipo BLOB. Esse artigo pode te ser útil, acho.
http://www.macoratti.net/08/11/asp_blobs.htm
http://www.macoratti.net/08/11/asp_blobs.htm
GOSTEI 0
Elisangela Silva
27/08/2012
Posso estar enganado, mas é uma gravação normal, como qualquer outro tipo de campo. Um simples insert. O que deve ser levado em consideração é o tipo no BD, que deve ser um tipo BLOB. Esse artigo pode te ser útil, acho.
http://www.macoratti.net/08/11/asp_blobs.htm
http://www.macoratti.net/08/11/asp_blobs.htm
ok
Muito obrigada de coração viu! Que Deus ilumine sempre a sua vida
GOSTEI 0
Elisangela Silva
27/08/2012
Acho que isso resolve seu problema
Escrevendo no banco de dados
Lendo do banco de dados
[code]
SqlConnection oSqlConnection = new SqlConnection(@"connectionString");
oSqlConnection.Open();
SqlCommand oSqlCommand = new SqlCommand();
oSqlCommand.Connection = oSqlConnection;
oSqlCommand.CommandText = "SELECT Arquivo FROM tbArquivo Where Id = 1;";
oSqlCommand.CommandType = CommandType.Text;
SqlDataReader oSqlDataReader = oSqlCommand.ExecuteReader();
byte[] buffer = null;
if (oSqlDataReader.Read())
{
buffer = (byte[])oSqlDataReader.GetValue(0);
}
oSqlConnection.Close();
StreamWriter oStreamWriter = new StreamWriter(@"C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf");
oStreamWriter.BaseStream.Write(buffer, 0, buffer.Length);
oStreamWriter.Close();
oStreamWriter.Dispose();
Ola Amigo Muito obrigada de coração viu! Que Deus ilumine sempre a sua vida
Ao executar o codigo deu um pequenino erro sera que vc poderia me ajudar mais essa vez?
O erro acontece ao abrir o arquivo do bd:
da uma mensagem assim...
O Adobe Reader não põde abrir 'Copy_file.pdf' porque não ha suporte a esse
tipo de arquivo ou ele foi danificado(por exemplo, foi enviado como anexo de e mail
e não foi codificado corretamente)
Escrevendo no banco de dados
StreamReader oStreamReader = new StreamReader(@"file.pdf"); byte[] buffer = new byte[oStreamReader.BaseStream.Length]; oStreamReader.BaseStream.Read(buffer, 0, buffer.Length); oStreamReader.Close(); oStreamReader.Dispose(); SqlConnection oSqlConnection = new SqlConnection(@"connectionString"); oSqlConnection.Open(); SqlCommand oSqlCommand = new SqlCommand(); oSqlCommand.Connection = oSqlConnection; oSqlCommand.CommandText = "INSERT INTO tbArquivo(Arquivo) VALUES(@Arquivo);"; oSqlCommand.CommandType = CommandType.Text; SqlParameter oSqlParameter = new SqlParameter(); oSqlParameter.ParameterName = "@Arquivo"; oSqlParameter.SqlDbType = SqlDbType.Image; oSqlParameter.SourceColumn = "Arquivo"; oSqlParameter.Value = buffer; oSqlCommand.Parameters.Add(oSqlParameter); oSqlCommand.ExecuteNonQuery(); oSqlConnection.Close();
Lendo do banco de dados
[code]
SqlConnection oSqlConnection = new SqlConnection(@"connectionString");
oSqlConnection.Open();
SqlCommand oSqlCommand = new SqlCommand();
oSqlCommand.Connection = oSqlConnection;
oSqlCommand.CommandText = "SELECT Arquivo FROM tbArquivo Where Id = 1;";
oSqlCommand.CommandType = CommandType.Text;
SqlDataReader oSqlDataReader = oSqlCommand.ExecuteReader();
byte[] buffer = null;
if (oSqlDataReader.Read())
{
buffer = (byte[])oSqlDataReader.GetValue(0);
}
oSqlConnection.Close();
StreamWriter oStreamWriter = new StreamWriter(@"C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf");
oStreamWriter.BaseStream.Write(buffer, 0, buffer.Length);
oStreamWriter.Close();
oStreamWriter.Dispose();
Ola Amigo Muito obrigada de coração viu! Que Deus ilumine sempre a sua vida
Ao executar o codigo deu um pequenino erro sera que vc poderia me ajudar mais essa vez?
O erro acontece ao abrir o arquivo do bd:
da uma mensagem assim...
O Adobe Reader não põde abrir 'Copy_file.pdf' porque não ha suporte a esse
tipo de arquivo ou ele foi danificado(por exemplo, foi enviado como anexo de e mail
e não foi codificado corretamente)
GOSTEI 0
Edson Oliveira
27/08/2012
Mas vc trocou esses pedaços de código.
file.pdf // Aqui vc tem que colocar o caminho de algum arquivo .pdf
connectionString //string de conexão.
C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf //aonde vc que salvar o arquivo.
Verifica se o arquivo que vc está lendo, está abrindo e depois tem executar de novo ser código.
Como vc está fazendo o seu programa, aonde vc está lendo o arquivo?
file.pdf // Aqui vc tem que colocar o caminho de algum arquivo .pdf
connectionString //string de conexão.
C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf //aonde vc que salvar o arquivo.
Verifica se o arquivo que vc está lendo, está abrindo e depois tem executar de novo ser código.
Como vc está fazendo o seu programa, aonde vc está lendo o arquivo?
GOSTEI 1
Elisangela Silva
27/08/2012
Mas vc trocou esses pedaços de código.
file.pdf // Aqui vc tem que colocar o caminho de algum arquivo .pdf
connectionString //string de conexão.
C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf //aonde vc que salvar o arquivo.
Verifica se o arquivo que vc está lendo, está abrindo e depois tem executar de novo ser código.
Como vc está fazendo o seu programa, aonde vc está lendo o arquivo?
file.pdf // Aqui vc tem que colocar o caminho de algum arquivo .pdf
connectionString //string de conexão.
C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf //aonde vc que salvar o arquivo.
Verifica se o arquivo que vc está lendo, está abrindo e depois tem executar de novo ser código.
Como vc está fazendo o seu programa, aonde vc está lendo o arquivo?
Ola mais uma vez agradeço a ajuda
Quanto ao codigo
em file.pdf eu coloquei a string lida atraves do fileDialog
String caminho = openFileDialog1.FileName;
StreamReader oStreamReader = new StreamReader(caminho);
Quanto salvar o arquivo eu coloquei
StreamWriter oStreamWriter = new StreamWriter(@"C:\Users\Particular\Desktop\Copy_file.pdf");
Elisangela
GOSTEI 0
Elisangela Silva
27/08/2012
Mas vc trocou esses pedaços de código.
file.pdf // Aqui vc tem que colocar o caminho de algum arquivo .pdf
connectionString //string de conexão.
C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf //aonde vc que salvar o arquivo.
Verifica se o arquivo que vc está lendo, está abrindo e depois tem executar de novo ser código.
Como vc está fazendo o seu programa, aonde vc está lendo o arquivo?
file.pdf // Aqui vc tem que colocar o caminho de algum arquivo .pdf
connectionString //string de conexão.
C:\Documents and Settings\emoliveira\Desktop\Copy_file.pdf //aonde vc que salvar o arquivo.
Verifica se o arquivo que vc está lendo, está abrindo e depois tem executar de novo ser código.
Como vc está fazendo o seu programa, aonde vc está lendo o arquivo?
Problrma resolvido
O codigo que vc postou ta coretissimo o meu arquivo pdf que tava corrompido,
dai eu resolvi fazer o teste com outros arquivos pdf e ai sim deu certo
Muito obrigada de coração viu! Que Deus ilumine sempre a sua vida.
GOSTEI 1
Edson Oliveira
27/08/2012
De nada.
Até mais
Até mais
GOSTEI 1
Edvaldo Silva
27/08/2012
Boa Noite! Parabéns pelo artigo!
Estou com um problema para exibir arquivos em PDF, Via asp.net utilizando c#
Consigo gravar perfeitamente no banco de dados, porém a leitura do arquivo em PDF não funciona.
Quando tento ler o arquivo gera este erro abaixo, é como se o sistema estivesse tentando executar um executável do windows.
Estou gravando os arquivos no banco de dados por motivo de segurança, porém não é este o caso, porque quando é no formato de imagem a mesma é exibida normalmente no gridview. Eu queria que os arquivos em PDF, fossem baixados para máquina do usuário ou que abrissem no navegador normalmente.
Desde já agradeço.
System.ComponentModel.Win32Exception: Access is denied.
PARTE DO CÓDIGO QUE UTILIZO PARA LER O ARQUIVO
imagemdoc.ImageUrl = null;
Hashtable parametro = new Hashtable();
DataSet dtimagem = new DataSet();
MysqlConecta obj = new MysqlConecta();
parametro.Clear();
parametro.Add("@id", GridDocumentos.SelectedDataKey.Value);
dtimagem = obj.MyDadosDataset("select * from CLIENTEDOCUMENTACAO where IDDOCUMENTACAO =@id ", connectionString, parametro);
GridDocumentos.UseAccessibleHeader = false;
GridDocumentos.HeaderRow.TableSection = TableRowSection.TableHeader;
if (dtimagem != null)
{
string aux = dtimagem.Tables[0].Rows[0]["EXTESAO"].ToString().ToUpper().Trim();
byte[] bytes = (byte[])dtimagem.Tables[0].Rows[0]["IMAGEMDOCUMENTO"];
string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
string url = "data:image/png;base64," + base64String;
imagemdoc.ImageUrl = url;
int indice = aux.IndexOf("PDF");
btnexcluiarquivo.Visible = true;
if (indice >= 0)
{
var nomeArquivo = url;
var arquivoTemp = Path.GetTempFileName();
arquivoTemp = Path.ChangeExtension(arquivoTemp, Path.GetExtension(nomeArquivo));
File.WriteAllBytes(arquivoTemp, bytes);
Process.Start(arquivoTemp);
}
Estou com um problema para exibir arquivos em PDF, Via asp.net utilizando c#
Consigo gravar perfeitamente no banco de dados, porém a leitura do arquivo em PDF não funciona.
Quando tento ler o arquivo gera este erro abaixo, é como se o sistema estivesse tentando executar um executável do windows.
Estou gravando os arquivos no banco de dados por motivo de segurança, porém não é este o caso, porque quando é no formato de imagem a mesma é exibida normalmente no gridview. Eu queria que os arquivos em PDF, fossem baixados para máquina do usuário ou que abrissem no navegador normalmente.
Desde já agradeço.
System.ComponentModel.Win32Exception: Access is denied.
PARTE DO CÓDIGO QUE UTILIZO PARA LER O ARQUIVO
imagemdoc.ImageUrl = null;
Hashtable parametro = new Hashtable();
DataSet dtimagem = new DataSet();
MysqlConecta obj = new MysqlConecta();
parametro.Clear();
parametro.Add("@id", GridDocumentos.SelectedDataKey.Value);
dtimagem = obj.MyDadosDataset("select * from CLIENTEDOCUMENTACAO where IDDOCUMENTACAO =@id ", connectionString, parametro);
GridDocumentos.UseAccessibleHeader = false;
GridDocumentos.HeaderRow.TableSection = TableRowSection.TableHeader;
if (dtimagem != null)
{
string aux = dtimagem.Tables[0].Rows[0]["EXTESAO"].ToString().ToUpper().Trim();
byte[] bytes = (byte[])dtimagem.Tables[0].Rows[0]["IMAGEMDOCUMENTO"];
string base64String = Convert.ToBase64String(bytes, 0, bytes.Length);
string url = "data:image/png;base64," + base64String;
imagemdoc.ImageUrl = url;
int indice = aux.IndexOf("PDF");
btnexcluiarquivo.Visible = true;
if (indice >= 0)
{
var nomeArquivo = url;
var arquivoTemp = Path.GetTempFileName();
arquivoTemp = Path.ChangeExtension(arquivoTemp, Path.GetExtension(nomeArquivo));
File.WriteAllBytes(arquivoTemp, bytes);
Process.Start(arquivoTemp);
}
GOSTEI 0