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" />
&nbsp;<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

Anúncios

Coordenador de Internet da Universidade do Oeste Paulista (Unoeste) e professor universitário de disciplinas relacionadas ao desenvolvimento de sistemas para Web, gerenciamento de servidores, serviços e redes.

Marcado com: , , , , , ,
Publicado em ASP.NET, SQL Server
5 comentários em “ASP.NET: Como realizar o upload de arquivos e armazená-los no banco de dados
  1. a disse:

    faltou postar a classe Banco ¬¬

  2. Eu disse:

    Falta aspa no insert ( no conteudo )

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

Erro: o Twitter não respondeu. Por favor, aguarde alguns minutos e atualize esta página.

Sorocaba e Região
Prestadora de serviços RIZZO GS - Sorocaba/SP

Serviços de limpeza, conservação, recepção, copa, portaria, vigia, zeladoria, jardim, elétrica, hidráulica, pintura, etc.

Contato: (15) 3357-4263 / (15) 3357-4502 - contato@rizzogs.com.br

Website: http://www.rizzogs.com.br

%d blogueiros gostam disto: