Escrevi este artigo pois enfrentei este tipo de problema na empresa onde precisava criar um meio de gravar arquivos em *.pdf para serem importados para o banco e disponibilizados para os clientes efetuarem o download através do nosso site.
O código é em C# e bem simples.
Basta usar um Fileupload para pegar o arquivo onde estiver armazenado.
Abaixo o designer.
Você pode colocar opção de texto para identificar o arquivo com o nome e/ou extensão e no meu caso eu tive q colocar também o mês correspondente .
Abaixo segue o código.
( neste caso eu usei dentro do botão para gravar )
protected void Button3_Click(object sender, EventArgs e)
{
DBAccess db = new DBAccess();
db.AddParameter(
"@TIPO", DropDownList2.Text);db.AddParameter(
"@MES", DropDownList3.Text); byte[] imageBytes = new byte[FileUpload1.PostedFile.InputStream.Length + 1];FileUpload1.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.Length);
db.AddParameter(
"@ARQUIVO", imageBytes);db.AddParameter("@NOMEFILE", txtnomefile.Text);
db.ExecuteNonQuery(
"INSERT INTO TB_ARQUIVOS_EMPRESA(TIPO,MES,ARQUIVO,NOMEARQUIVO) " + "VALUES ( @USUARIO,@EMPRESA,@TIPO,@MES,@ARQUIVO,@EMAIL,@DATA,@NOMEFILE)");}
Na opção Byte[] é onde pelo o conteúdo do "FileUpload" e transforma em "imagembytes" para com isso possa ser salvo no SQL.
NO banco terá que ser criado o campo como "IMAGE" para que possa armazenar o arquivo
AGORA O MEIO PARA RETORNO DO AQUIVO.
O comando também é bem simples você vai procurar o arquivo no banco e transformalo no que "erar".
using
(SqlConnection Conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ASPNETDBConnectionString"].ConnectionString)){
string SQL = "SELECT ARQUIVO FROM dbo.TB_ARQUIVOS_EMPRESA WHERE IDFILE = " + Convert.ToInt32(Request.QueryString["IDFILE"]); SqlCommand myCommand = new SqlCommand(SQL, Conn);Conn.Open();
byte[] buffer = (byte[])myCommand.ExecuteScalar(); SqlDataReader myReader = myCommand.ExecuteReader();if
(myReader.Read()){
Response.AddHeader("content-disposition", "attachment; filename=INFORMATIVO.pdf" ) ;
Response.ContentType =
"application/pdf";Response.BinaryWrite((
byte[])myReader["ARQUIVO"]);Response.End();
}É isso caso precisem de ajuda em mas algo estamos a disposicão.
At.
Flávio Renato