[ASP .NET] Upload de Arquivo

No post de hoje veremos uma maneira bem fácil para fazer upload de arquivos com ASP .NET. Da forma que mostrarei, por exemplo, é possível verificar se já existe um arquivo como o mesmo no na pasta e dar um aviso ao usuário ou alterar o nome desse arquivo.

Utilizaremos somente:

  • Um <asp:FileUpload />; e
  • um <asp:Button />;

O segredo está no código executado no botão. A seguir, mostro o código html da página e também o codebehind necessário para fazer o upload e em seguida explico o código.

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!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></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:FileUpload ID="FileUpload1" runat="server" Width="366px" />
        <br />
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </div>
    </form>
</body>
</html>
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        IO.File.WriteAllBytes("d:/" & FileUpload1.FileName, FileUpload1.FileBytes)

    End Sub

No código acima temos a procedure do botão onde executamos um métodos que cria um arquivo numa pasta do servidor.

O método que utilizamos, WriteAllBytes, está na classe File, dentro o Namespace IO. Chamamos o método passando dois parâmetros: o primeiro com o caminho onde o arquivo será gravado e um array de bytes do arquivo que selecionamos; para retornar tal array, pegamos a propriedade FileBytes do objeto FileUpload.

Importante. A pasta onde serão gravados os arquivos, deve ter permissão para escrita.

Extra

No primeiro parâmetro, onde passamos no caminho onde o arquivo será gravado, onde está FileUpload1.FileName, poderíamos colocar algo mais, para não permitir que um arquivo com um nome que já exista na pasta, seja sobreposto pelo novo. Abaixo temos o código do botão, mas com uma pequena alteração. Adicionei ao nome do arquivo que será gravado um GUID gerado pela função NewGuid. Dessa forma, o nome do arquivo ficaria com algo do tipo: fd81e93b-aa14-47b1-ab41-2779ce9138c3NOME_ORIGINAL_DO_ARQUIVO.txt.

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        IO.File.WriteAllBytes("d:/" & Guid.NewGuid.ToString & FileUpload1.FileName, FileUpload1.FileBytes)

    End Sub

Outra coisa que poderia ser feito, é gerar uma hash MD5 com o nome original do arquivo.

Espero que tenha ajudado. Até uma próxima!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.