Você está na página 1de 9

Brasília, 31 de julho de 2005.

UPLOAD – Enviando imagem pela Internet

Olá pessoal, neste artigo mostrarei como desenvolver um sistema que envia
imagens pela internet. Chamamos isso de upload, quando baixo um arquivo da
internet chamamos isso de download. Todo código é bem simples para quem
já sabe como funciona e um pouco mais complexo para quem não sabe ou
nunca viu a funcionalidade. No começo do código, antes de tudo usarei uma
tag html com o famoso runat=server. Não ache estranho, porém preciso ter
acesso a objetos de tela dentro do code behing.

Referência: 1-1

O código abaixo mostra o que falei logo acima.


Tag HTML.
<INPUT class="caixa" id="txtImagem" style="WIDTH: 296px; HEIGHT:
22px" type="file" size="30" name="txtImagem" runat="server">

O objeto chama-se txtImagem. Posso pegar esse objeto dentro do código


c#.net porque o mesmo está com uma tag que uso, runat.

<%@ Page language="c#" Codebehind="upload.aspx.cs"


AutoEventWireup="false" Inherits="Artigos.upload" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>upload</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio
.NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Button id="cmdEnviar" style="Z-INDEX: 101;
LEFT: 136px; POSITION: absolute; TOP: 120px"
runat="server" Text="Enviar
Arquivo"></asp:Button>
<TABLE style="Z-INDEX: 102; LEFT: 24px; POSITION:
absolute; TOP: 72px">
<TR>
<TD>Imagem:</TD>
<TD><INPUT class="caixa" id="txtImagem"
style="WIDTH: 296px; HEIGHT: 22px" type="file" size="30"
name="txtImagem"
runat="server">
</TD>
</TR>
</TABLE>
<asp:Label id="lblUpload" style="Z-INDEX: 103; LEFT:
88px; POSITION: absolute; TOP: 24px" runat="server"
Font-Bold="True" Font-Names="Arial Narrow"
Font-Size="Large">UPLOAD DE ARQUIVOS</asp:Label>
</form>
</body>
</HTML>

Todo meu FORM está destacado da cor azul. Preste bem atenção nas tags que
uso para enviar arquivo. Na parte de design do Visual Studio.NET 2003 é
mostrado na figura 1-2.

Referência: 1-2
Agora mostrarei o código C#.NET enviando uma imagem pela internet.

Referência: 1-3

/// <summary>
/// Metodo que pega a extensao dos arquivos
/// </summary>
private void pegaArquivo()
{
//pegando o arquivo
sArquivo = txtImagem.PostedFile.FileName;
nomeArqFinal = System.IO.Path.GetFileName(sArquivo);
sExtensao = System.IO.Path.GetExtension(sArquivo);
}
/// <summary>
/// Metodo que clica no botao enviar para fazer upload do
arquivo
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cmdEnviar_Click(object sender,
System.EventArgs e)
{
pegaArquivo();

//fazendo upload do arquivo


if (sExtensao.ToUpper() == ".GIF" ||
sExtensao.ToUpper() == ".JPG" || sExtensao.ToUpper() == ".PNG")
{
//setando caminho para o arquivo no servidor
//estou setando para \imagens

this.txtImagem.PostedFile.SaveAs(Server.MapPath(".") +
@"\images\" + nomeArqFinal);
Response.Write("<script>alert('Arquivo enviado
com sucesso !!');</script>");

Response.Write("<script>location.href='upload.aspx';</script>");
}
else
{
Response.Write("<script>alert('A extensão do
arquivo deve ser .GIF ou .JPG ou .PNG');</script>");

Response.Write("<script>location.href='upload.aspx';</script>");
}
}

Explicando o código C#.NET:


Clique duas vezes no botão enviar. Primeiramente, coloquei um método antes
de enviar o arquivo escolhido. Esse método chama-se pegaArquivo() e faz
apenas uma coisa; pega o nome do arquivo e a extensão.
Na próxima linha do método cmdEnviar_Click verifico qual a extensão do
arquivo que o usuário escolheu.
if (sExtensao.ToUpper() == ".GIF" || sExtensao.ToUpper() == ".JPG" ||
sExtensao.ToUpper() == ".PNG")

Se a extensão do arquivo escolhido foi algumas dessas descritas na condição, o


arquivo será enviado automaticamente para a internet e dentro da pasta
images.

O código que envia o arquivo para o servidor é:

this.txtImagem.PostedFile.SaveAs(Server.MapPath(".") + @"\images\" +
nomeArqFinal);

Dica:
Não posso esquecer de criar a pasta images dentro do servidor ou do próprio
computador. Não posso deixar de falar que, deve ter permissão para fazer
upload dentro do servidor da internet, ou seja, deve ter permissão de leitura
e escrita para a pasta images.

Continuando com a análise do código, se não for as extensões que verifiquei o


sistema mostra uma mensagem falando de quais extensões podem ser
escolhidas para enviar o arquivo.
Referência: 1-4

Referência: 1-5
No clique do botão Enviar Arquivo, a mesma figura será transferida para a
pasta images.

Referência: 1-6
Referência: 1-7

Veja que a figura está dentro da pasta images.


Aqui chego ao final desse arquivo, espero que possa ter ajudado a você.

Mauricio Junior
mauricio@ascompras.com
mauricio@aspneti.com.br

Você também pode gostar