Esta seção descreve os dois métodos usados no ASP.NET para fazer upload de arquivos em páginas da web.
ASP.NET inclui dois controles que permitem aos usuários fazer upload de arquivos para o servidor web. Depois que o servidor aceitar os dados do arquivo carregado, o aplicativo poderá salvá-los, inspecioná-los ou ignorá-los. O próximo controle permite o upload de arquivos:
HtmlInputFile - controle de servidor HTML
FileUpload - controle da web ASP.NET
Ambos os controles permitem o upload de arquivos, mas o controle FileUpload define automaticamente o formato de codificação, enquanto o controle HtmlInputFile não.
Neste tutorial, usaremos o controle FileUpload. Este controle permite ao usuário visualizar o arquivo selecionado a ser carregado. Ele fornece um botão de visualização e uma caixa de texto onde o nome do arquivo pode ser inserido.
Depois que o usuário insere um nome de arquivo na caixa de texto ou visualiza o arquivo, o método SaveAs do controle FileUpload salva o arquivo no disco rígido.
A sintaxe básica do FileUpload é a seguinte:
<asp:FileUpload ID= "Uploader" runat = "server" />
A classe FileUpload é derivada da classe WebControl e herda todos os seus elementos. A classe FileUpload possui estas propriedades somente leitura:
propriedade | descrever |
---|---|
ArquivoBytes | Retorna um conjunto de bytecodes para o arquivo a ser carregado |
Conteúdo do arquivo | Retorna o objeto stream do arquivo a ser carregado |
Nome do arquivo | Retorna o nome do arquivo que será enviado |
HasFile | Determinar se o controle tem arquivos para carregar |
Arquivo postado | Retorna uma referência ao arquivo enviado |
O arquivo publicado é encapsulado em um objeto na forma de HttpPostedFile, que pode ser acessado através da propriedade PostedFile da classe FileUpload.
A classe HttpPostedFile possui as seguintes propriedades comumente usadas:
propriedade | descrever |
---|---|
Comprimento do conteúdo | Retorna o tamanho em bytes do arquivo enviado |
ContentType | Retorna o tipo MIME do arquivo enviado |
Nome do arquivo | Retorne o nome completo do arquivo |
Fluxo de entrada | Retorna o objeto stream do arquivo a ser carregado |
O exemplo a seguir ilustra o controle FileUpload e suas propriedades. Este formulário possui um controle FileUpload, bem como um botão salvar e um controle de rótulo com o nome, tipo e comprimento reais do arquivo.
No modo de design, a tabela fica assim:
Os códigos de arquivo relevantes estão listados abaixo:
<body> <form id="form1" runat="server"> <div> <h3> File Upload:</h3> <br /> <asp:FileUpload ID="FileUpload1" runat="server" /> <br /><br /> <asp:Button ID="btnsave" runat="server" onclick="btnsave_Click" Text="Save" /> <br /><br /> <asp:Label ID="lblmessage" runat="server" /> </div> </form></body>
O código do botão Salvar está listado abaixo:
protected void btnsave_Click(object sender, EventArgs e){ StringBuilder sb = new StringBuilder(); if (FileUpload1.HasFile) { try { sb.AppendFormat(" Uploading file: {0}", FileUpload1.FileName); //saving the file FileUpload1.SaveAs("<c:\SaveDirectory>" + FileUpload1.FileName); //Showing the file information sb.AppendFormat("<br/> Save As: {0}", FileUpload1.PostedFile.FileName); sb.AppendFormat("<br/> File type: {0}", FileUpload1.PostedFile.ContentType); sb.AppendFormat("<br/> File length: {0}", FileUpload1.PostedFile.ContentLength); sb.AppendFormat("<br/> File name: {0}", FileUpload1.PostedFile.FileName); }catch (Exception ex) { sb.Append("<br/> Error <br/>"); sb.AppendFormat("Unable to save file <br/> {0}", ex.Message); } } else { lblmessage.Text = sb.ToString(); }}
Preste atenção às seguintes questões:
A classe StringBuilder é gerada a partir do namespace System.IO, portanto deve ser incluída.
As áreas try e catch são usadas para detectar erros e exibir mensagens de erro.