2011-06-14 47 views
0

我在我的.NET应用程序中有一个上传附件页面。只要上传的文件小于4   MB,它就可以正常工作。如何设置上传文件的大小?我想将限制设置为小于8   MB。如果文件大于8   MB,上传过程将被确定。如何在.NET/C#中控制上传文件大小?

这是我在后端的代码。 File1是上传控制器。

protected void ImageButton1_Click(object sender, ImageClickEventArgs e) 
{ 
    if ((File1.PostedFile != null) && (File1.PostedFile.ContentLength > 0)) 
    { 
     string name=ViewState["UserName"].ToString(); 
     string fn = System.IO.Path.GetFileName(File1.PostedFile.FileName); 
     string extension = Path.GetExtension(File1.PostedFile.FileName); 
     if (extension == "") 
      return; 
     DirectoryInfo di = new DirectoryInfo(Server.MapPath("~/Attachments/" + name)); 
     FileInfo[] rgFiles = di.GetFiles("*.*"); 
     foreach (FileInfo fi in rgFiles) 
     { 
      if (fi.Name.Equals(fn)) 
      { 
       ShowMessage(this, "This file name already exists, please check the list."); 
       return; 
      } 
     } 
     string SaveLocation = Server.MapPath("~/Attachments/" + name + "/" + fn); 
     try 
     { 
      File1.PostedFile.SaveAs(SaveLocation); 
      ShowMessage(this,"The file has been uploaded."); 
     } 
     catch (Exception ex) 
     { 

      ShowMessage(this,"Error" + ex.Message); 
     } 
     GetList(); 
    } 
    else 
    { 
     ShowMessage(this,"Please choose one file"); 
    } 
} 
+1

请参阅http://stackoverflow.com/questions/288612/how-to-increase-the-max-upload-file-size-in-asp-net – 2011-06-14 20:37:53

回答

1
<configuration> 
    <system.web>  
     <httpRuntime maxRequestLength="8000" /> 
    </system.web> 
</configuration> 
1

您可以使用web.config对此进行排序。特别是maxRequestLength属性。

See here.

0

不幸的是,没有简单的方法去了解这个问题。我有一个类似的问题,上传图片和试图上传他们未压缩的女儿生日聚会的24英尺宽的图像的人:)

问题是你不能确定文件的大小,直到文件基本上传到服务器通过帖子。这将导致服务器永远耗费一天的时间来加载并最终超时,这不会构成用户友好的页面。

我能想出的唯一解决方案是一个flash文件上传器,它将压缩客户端机器上的文件,然后将压缩文件发送到网站。所以一个200MB的图像变成了一个100K的文件。有一些开源的Flash项目只需要谷歌浏览器。这就是Facebook和Picasa这样的网站用于上传文档/图片的功能。

我还没有试过寻找一个,但也许HTML5会提供一些东西,因为它在不久的将来基本上取代闪光。