Olá pessoal, tudo bom?
Segue abaixo um exemplo de como realizar o upload de arquivos e armazená-los no Banco de Dados via ASP.NET utilizando C#.
O 1º passo é criar um tabela em seu banco de dados, onde o atributo que irá armazenar o arquivo deverá ser do tipo varbinary(MAX), conforme o exemplo abaixo:
Na sequencia, crie uma página ASP.NET para enviar o arquivo para o servidor. Veja abaixo o código e visualização da página de teste.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Upload.aspx.cs" Inherits="UploadBD.Upload" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Upload</title> </head> <body> <form id="form1" runat="server"> <div> <b>Upload de arquivos </b> <br /> <br /> Arquivo:<br /> <asp:FileUpload ID="fuArquivo" runat="server" /> <br /> Descrição:<br /> <asp:TextBox ID="txtDescricao" runat="server" Columns="40"></asp:TextBox> <br /> <asp:Button ID="btnEnviar" runat="server" Text="Enviar" onclick="btnEnviar_Click" /> &nbsp;<asp:Label ID="lblMensagem" runat="server"></asp:Label> </div> </form> </body> </html>
No clique do botão Enviar, inclua o trecho de código abaixo, sendo que o mesmo irá enviar o arquivo ao servidor e também fará a chamada ao método de uma classe responsável pelo armazenamento do arquivo desejado no banco de dados.
... protected void btnEnviar_Click(object sender, EventArgs e) { if (fuArquivo.HasFile) { byte[] documento = fuArquivo.FileBytes; string mime = fuArquivo.PostedFile.ContentType; string nomeArquivo = fuArquivo.PostedFile.FileName; Classes.Arquivo arq = new Classes.Arquivo(); if (arq.Upload(txtDescricao.Text, mime, nomeArquivo, documento)) lblMensagem.Text = "OK"; else lblMensagem.Text = "Erro..."; } } ...
Já na classe Arquivo, invocada pelo clique no botão Enviar, temos o seguinte trecho de código:
... public class Arquivo : Banco { public bool Upload(string descricao, string mime, string nomeArquivo, byte[] doc) { ComandoSQL.CommandText = "insert into Arquivos (descricao, mime, nomearquivo, documento) values (@desc, @mime, @nome, @doc)"; ComandoSQL.Parameters.AddWithValue("@desc", descricao); ComandoSQL.Parameters.AddWithValue("@mime", mime); ComandoSQL.Parameters.AddWithValue("@nome", nomeArquivo); ComandoSQL.Parameters.AddWithValue("@doc", doc); if (ExecutaSQL(ComandoSQL) > 0) return true; else return false; } } ...
Grande abraço,
Eduardo Henrique Rizo
[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]
faltou postar a classe Banco ¬¬
Bom dia!
Não coloquei a classe Banco.cs porque nela tenho apenas um objeto da classe SqlCommand que irá fazer a execução do insert demonstrado no post.
Grande abraço,
Eduardo
Pra colocqar exemplo pela metade e melhor nem disponibilizar nada.
Boa tarde Mauro, tudo bom?
Qual seria sua dúvida?
Abraços,
Eduardo H. Rizo
Falta aspa no insert ( no conteudo )