FileUpload文件上传控件 c fileupload上传文件

以往ASP.NET1.0只能使用Client端的Input(File)进行文件上传,但功能略为简单;而ASP.NET2.0则内置了服务器端的FileUpload文件上传控件,它的功能比Input(File)功能更丰富强大。FileUpload提供了更大的操控性,使开发可以介入到更底层的操控,这是Input(File)所不可及的。

以下提供一个上传的示例:

protected void btnUpload_Click(object sender,EventArgs e)
{
if(FileUpload1.HasFile)
{
try
{
//获取网站根目录路径
stringpath = HttpContext.Current.Request.MapPath("~/");
//存储文件到磁盘
FileUpload1.SaveAs(path+ FileUpload1.FileName);
//文件大小
intsize = FileUpload1.PostedFile.ContentLength;
//文件类型
stringtype = FileUpload1.PostedFile.ContentType;
}
catch
{

}
}
else
{
Response.Write("<scriptlanguage="JavaScript">alert("必须指定文件!")</script>");
}
}

程序说明:

  1. FileUpload1.HasFile用来检查FileUpload控件是否有指定文件;
  2. HttpContext.Current.Request.MapPath("~/")获取网站所在磁盘的绝对路径。之所以这么做,是因为FileUpload控件必须指定“绝对路径”,而非相对路径,同时绝对路径也必须具有写入权限;
  3. FileUpload1.SaveAs()是将上传文件存储在磁盘的方法;
  4. FileUpload1.FileName用于获取上传文件的名称;
  5. FileUpload1.PostedFile.ContentLength用于获取上传文件的大小,以Byte为单位;
  6. FileUpload1.PostedFile.ContentType用于获取上传文件的Mime类型。

关于上传大型文件

上传过程中,若上传大型文件(例如:10MB),上传会报错并中断,发生这种情况的原因在于系统默认限制上传文件的大小为4096KB,因此只要上传文件超过这个限制就会产生错误并中断。若想解除这个限制,就必须调整 maxRequestLength长度限制。在Web.Config文件中做如下设置:

<configuration>

<system.web>

<httpRuntime maxRequestLength="4096"executionTimeout="120"/>

</system.web>

</configuration>

设置说明:

  1. maxRequestLength 属性限制上传文件的大小,以 KB 为单位,默认值为 4096KB,最大上限为2097151KB,大约为 2GB;
  2. executionTimeout 属性限制上传文件的时间,以 秒(s)为单位,默认值为90s,如果考虑到所设计的Web应用系统上传时间要超过 90s,可延长设定值。

FileUpload控件多个上传文件

一次上传多个文件要比一次只上传一个文件需要更多的防呆程序。

protectedvoid btnUpload_Click(object sender, EventArgs e)
{
try
{
Upload(FileUpload1);
Upload(FileUpload2);
//...
//ViewState["Uploads"]
}
catch
{

}
}
protectedvoid Upload(FileUpload myFileUpload)
{
string path = HttpContext.Current.Request.MapPath("~/");
if (myFileUpload.HasFile)
{
try
{
myFileUpload.SaveAs(path + myFileUpload.FileName);
ViewState["Uploads"] += myFileUpload.PostedFile.FileName.ToString()+ "<br>";
}
catch
{

}
}
else
{
//检查至少必须指定一个上传文件
if (hasFile())
{
Response.Write("<scriptlanguage="JavaScript">alert("必须指定文件!")</script>");
}
}
}
protectedbool hasFile()
{
//定义status变量,指示是否包含文件,默认false
bool status = false;
status = (FileUpload1.HasFile || FileUpload2.HasFile);
return status;
}

由于多个文件上传会涉及 Web.Config 中 maxRequestLength文件上传的大小,因此有必要让用户知道系统目前限制值是多少。

首先引用System.Web.Configuration 命名空间

protectedvoid getUploadSize()
{
//开启网站的 Web.Config 配置文件
Configuration config =WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
//获取 system.web/httpRuntime 配置区块
HttpRuntimeSection myHttpRuntimeSection =(HttpRuntimeSection)config.GetSection("system.web/httpRuntime");
//获取文件上传最大限制值
int size = myHttpRuntimeSection.MaxRequestLength;
Response.Write("<script>alert("" +size.ToString() +"")</script>");
//设置文件上传最大限制值
myHttpRuntimeSection.MaxRequestLength = 10240;

}

多个文件上传似乎是以“异步”方式进行的,即假定上传十个文件,并非一个上传结束再开始上传下一个,而是十个文件同时上传。由于同时有十个FileUpload实体在各自进行数据上传及写入磁盘操作,且一旦上传操作开始,就无法通过关闭 IE来终止(用大型文件测试便知),必须关闭 IIS 的 Process 才行。

限制 FileUpload的文件上传类型

protected void setUploadType()
{--
string path = HttpContext.Current.Request.MapPath("~/");
//定义变量 fileAllowToUpload 根据上传文件类型指示是否允许上传
bool fileAllowToUpload = false;
//定义字符串数组 allowExtensions 表示允许上传的文件类型
string[] allowExtensions = { ".doc", ".xls", ".ppt", ".jpg", ".gif"};
//获取网站根目录
string path = HttpContext.Current.Request.MapPath("~/");
if (FileUpload1.HasFile)
{
string fileExtension =Path.GetExtension(FileUpload1.FileName).ToLower();
//检查上传文件的扩展名是否符合限定类型
for (int i = 0; i < allowExtensions.Length;i++)
{
if (fileExtension == allowExtensions[i])
{
fileAllowToUpload = true;
}
}
if (fileAllowToUpload)
{
try
{
//存储文件到磁盘
FileUpload1.SaveAs(path + FileUpload1.FileName);
}
catch
{

}
}
else
{
FileUpload文件上传控件 c fileupload上传文件
Response.Write("<scriptlanguage="JavaScript">alert("不是允许的类型!")</script>");
}
}
}

FileUpload 的一处最大的优点,就是可以做出“真实的”实时上传进度监控和已上传 Bytes数的实时变化,这部分将后续补充。

  

爱华网本文地址 » http://www.aihuau.com/a/25101016/287796.html

更多阅读

MFC中进度条控件的使用方法 mfc进度条控件使用

MFC中进度条控件的使用方法——简介进度条控件是程序开发中基础控件之一,常用于显示程序的进度。在进行程序安装、文件传输时经常用到。其用法也比较简单固定。今天就和大家分享一下其简单的使用方法吧。^_^MFC中进度条控件的使用方

如何安装ocx控件 inf 安装

如何安装ocx控件——简介正确使用中华粮网网上交易密钥,需要安装ActiveX控件。怎么办教大家!如何安装ocx控件——工具/原料ActiveX控件如何安装ocx控件——方法/步骤如何安装ocx控件 1、

怎样使用C#的月历MonthCalendar 控件 c panel控件的使用

怎样使用C#的月历【MonthCalendar】控件——简介 C#中的日历控件【MonthCalendar】是比较常用的一个控件,可以让用户对日期进行快速的查看和设置、也可以选择一段所需要的日期时间段。 下面介绍一下几种日历控件常用的使用方法。怎

如何使用C#TextBox控件 textboxdropdown控件

如何使用C#TextBox控件——简介在c#中TextBox控件做为最重要的控件,必须要下功夫吃透,学通。下面我给大家说说TextBox控件的三个重要属性如何使用C#TextBox控件——方法/步骤

窗口和控件闪烁解决方案 屏幕闪烁解决办法

对于MFC程序员来说做UI开发是痛苦的事情,不过大多数情况下我们都需要做这件事情,因为MFC自带的控件实在是太简陋了。这时候我们多半会涉及到自绘控件,随之而来的很可能就是窗口和控件的闪烁问题。这篇文章希望对MFC的窗口和控件闪烁问

声明:《FileUpload文件上传控件 c fileupload上传文件》为网友如鲸向海分享!如侵犯到您的合法权益请联系我们删除