ASP.NET: Como realizar o upload de arquivos e armazená-los no banco de dados

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:

tabela_varbinary
Tabela criada em BD SQL Server

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" />
 <asp:Label ID="lblMensagem" runat="server"></asp:Label>
 </div>
 </form>
</body>
</html>

pagina_upload

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’]

5 comentários em “ASP.NET: Como realizar o upload de arquivos e armazená-los no banco de dados”

Deixe um comentário