Nicolas Tarzia

.Net developer!

My Links

Blog Stats

News

Desenvolvedor .Net

Archives

Post Categories

Image Galleries

Blogs

Link's

Pessoal

Profissional

Login

Aumentando o tamanho de Uploads ASP.NET

Quem trabalha com o controle FileUpload, sabe deste problema, quando o usuario tenta colocar arquivos com mais de 4mb de tamanho exibe um erro, dizendo que o tamanho máximo para upload foi excedido, não sendo possivel fazer o upload do arquivo, este valor pode ser alterado, porém, pode acontecer da aplicação ficar instavel, pois a alteração que será feita vai alterar a quantidade de acessos, o tempo de execução das páginas e etc.

O Jeito simples e rápido de consertar esta falha é alterando o Web.Config inserindo esta tag:

<system.web>
  <httpRuntime executionTimeout="240" maxRequestLength="20480" />
</system.web>
 

Tornando assim sua aplicação com um tempo de execução maior e permitindo arquivos de aproximadamente 20mb, lembrando que acarretará no problema da performance;

Após esta alteração seria interessante exibir ao usuario que o maximo permitido é o valor que está setado por voce, para isso utilizar esta maneira que é a mais simples:

System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
HttpRuntimeSection section = config.GetSection("system.web/httpRuntime") as HttpRuntimeSection;
double maxFileSize = Math.Round(section.MaxRequestLength / 1024.0, 1);
FileSizeLimit.Text = string.Format("Make sure your file is under {0:0.#} MB.", maxFileSize);

Uma outra maneira é utilizar componentes como:

FileUploader.Net (Pago) - (link)
RadUploader (Pago)- (link)
NeatUploader (Até o momento Gratis) - (link)

Um outro controle muito legal é o SWFUpload (link)

 

Upload de diversos arquivos

Aqui está um código-fonte para upload de diversos arquivos na mesma página.

<%@ Page Language="C#" AutoEventWireup="false" %>
<!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>
    <title>File upload test</title>
</head>
<body>
<form id="form1" runat="server" enctype="multipart/form-data">
<p id="upload-area">
   <input type="file" runat="server" size="60" />
</p>
<p><a href="#" onclick="addFileUploadBox(); return false;">Add file</a></p>
<p><asp:Button ID="btnSubmit" runat="server" Text="Upload" OnClick="btnSubmit_Click" /></p>
<script type="text/javascript">
function addFileUploadBox()
{
    if (!document.getElementById || !document.createElement)
        return false;
        
    var uploadArea = document.getElementById ("upload-area");
    
    if (!uploadArea)
        return;
    var newLine = document.createElement ("br");
    uploadArea.appendChild (newLine);
    
    var newUploadBox = document.createElement ("input");
    
    // Set up the new input for file uploads
    newUploadBox.type = "file";
    newUploadBox.size = "60";
    
    // The new box needs a name and an ID
    if (!addFileUploadBox.lastAssignedId)
        addFileUploadBox.lastAssignedId = 100;
        
    newUploadBox.setAttribute ("id", "dynamic" + addFileUploadBox.lastAssignedId);
    newUploadBox.setAttribute ("name", "dynamic:" + addFileUploadBox.lastAssignedId);
    uploadArea.appendChild (newUploadBox);
    
    addFileUploadBox.lastAssignedId++;
}
</script>
<script type="text/C#" runat="server">
void btnSubmit_Click(object sender, EventArgs e)
{
    HttpFileCollection uploads = HttpContext.Current.Request.Files;
    for (int i = 0; i < uploads.Count; i++)
    {
        HttpPostedFile upload = uploads[i];
        if (upload.ContentLength == 0)
            continue;
        // ---------------------------------------------------
        // Save the uploaded file on disk or in database
        // ---------------------------------------------------
    }
}
</script>
</form>
</body>
</html>

Abraços,
Nícolas Tarzia

posted on Tuesday, January 08, 2008 10:25 PM

Feedback

No comments posted yet
Title  
Name  
Url
Box Code
Protected by FormShield
Comments