Upload de Arquivos com ASP.NET

agosto 11, 2008 12:21 by pauloholanda

Voltando ao velho mundo do ASP, fazer upload de arquivos através de uma página web era complicado. O problema era devido ao tipo de criptografia utilizada para enviar o arquivo através do navegador do cliente, receber esse arquivo no servidor era uma tarefa complexa.

Felizmente para nós, o Framework .Net vem com algumas classes que faz o upload dos arquivos a partir de uma aplicação simples. Esse artigo irá demonstrar isso.

public class uploadArquivo

Classe que usaremos para realizar upload, o legal é que podemos reaproveitá-la em outras aplicações, pois é bem dinâmica.

private FileUpload _fu;
private string _msg;
private string _pasta;
private string _nomeinicial;
private string _nomearquivo;

Algumas variáveis como _nomeinicial e _nomearquivo, servem principalmente para quem irá trabalhar com bd, pois poderá definir um prefixo para o nome do arquivo e guardar o nome que foi gerado no bd.

 public bool Save()
{
int maxSize = 10485760; //1 megabyte = 1 048 576 bytes
string extension = "";
bool result = false;
try
{
if (!fu.HasFile){
msg = "Nenhum arquivo foi selecionado!";
}
else if (fu.PostedFile.ContentLength > maxSize)
{
msg = "Arquivo utrapassou o tamanho máximo de 10 MB!";
}
else
{
extension = System.IO.Path.GetExtension(fu.FileName);
nomearquivo = _nomeinicial + DateTime.Now.Year + 
DateTime.Now.Month + 
DateTime.Now.Day + 
DateTime.Now.Hour + 
DateTime.Now.Minute + 
DateTime.Now.Second + extension;
fu.PostedFile.SaveAs(System.Web.HttpContext.Current.Server.MapPath(".") + 
@"\" + _pasta + "\\" + _nomearquivo);
msg = "Arquivo enviado com sucesso!";
result = true;
}
}
catch (Exception ex) { 
System.Web.HttpContext.Current.Response.Write(ex.Message); 
result = false; 
}
finally
{
}
return result;
}

A função Save() retorna true se o arquivo foi salvo com sucesso ou false para o caso de ocorrer algum erro.

No nome do arquivo usamos o prefixo (_nomearquivo) concatenado com valores da data atual para evitar que arquivos com o mesmo nome sejam sobrepostos, definimos também um tamanho limite para o arquivo, que nesse caso foi de 10M.

Essa função irá retornar uma mensagem de erro ou sucesso e novo nome do arquivo como no exemplo a seguir:

 

Disponibilizamos os exemplos para download.

Até o próximo artigo!

 

UploadNet.zip (104,71 kb)

 

[]s,

Paulo Holanda


5.0 ponto(s). Avaliado por 1 pessoas

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Criando controles dinamicamente

agosto 8, 2008 12:43 by pauloholanda

Resolvi escrever esse artigo, devido a dificuldade que obtive em encontrar material sobre esse assunto, quando precisei criar formulários diferentes dentro de um cenário.

 

Este pequeno artigo apresenta uma solução para criar controles e tags html dentro de um outro controle.

 

Criando a página a ser usada

o código abaixo é referente a página Artigo1.aspx, foi criado apenas um Panel identificado como Panel1.

Artigo1.aspx

<%@ Page Language="C#" AutoEventWireup="true" 
CodeFile="Artigo1.aspx.cs" Inherits="Artigo1" %>
<!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>Criando controles dinamicamente</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
</div>
</form>
</body>
</html>


Artigo1.aspx.cs

public partial class Artigo1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//cria um novo controle dropdownlist
DropDownList ddl = new DropDownList();
//identifico o dropdownlist
ddl.ID = "ddlDinamico";
//adicionar alguns itens ao dropdownlist
ddl.Items.Add(new ListItem("goiaba"));
ddl.Items.Add(new ListItem("banana"));
ddl.Items.Add(new ListItem("laranja"));
//adicionar controle ao panel
Panel1.Controls.Add(ddl);
//usamos a função GetLiteral para adicionar tags/textos em html ao Panel
Panel1.Controls.Add(GetLiteral("<br />dropdownlist criado dinamicamente!!<br />"));
}
public Literal GetLiteral(string text)
{
Literal rv;
rv = new Literal();
rv.Text = text;
return rv;
}
}

a figura 01 é referente ao resultado da aplicação em execução.

 

 


figura 1

espero ter ajudado com essa dica, até a próxima!

 

[]s,

Paulo Holanda


5.0 ponto(s). Avaliado por 1 pessoas

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5