在ASP.NET 2.0中使用FileUpload服务器控件很容易的就能将文件上传到服务器,一个简单的例子如下:

aspx:

程序代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="fileupload.aspx.cs" Inherits="fileupload" %>

<!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 runat="server">
    <title>FileUpload上传文件示例-Mzwu.com</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
         <asp:FileUpload ID="FileUpload1" runat="server" />
        <asp:Button ID="Button1" runat="server" _disibledevent="Button1_Click" Text="上传文件" /><br />
        <asp:Label ID="Label1" runat="server" Height="269px" Text="Label" Width="360px"></asp:Label></div>
    </form>
</body>
</html>

aspx.cs:

程序代码
protected void Button1_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        try
        {
            FileUpload1.SaveAs(Server.MapPath("upload") + "\\" + FileUpload1.FileName);
            Label1.Text = "客户端路径:" + FileUpload1.PostedFile.FileName + "<br>" +
                          "文件名:" + System.IO.Path.GetFileName(FileUpload1.FileName) + "<br>" +
                          "文件扩展名:" + System.IO.Path.GetExtension(FileUpload1.FileName) + "<br>" +
                          "文件大小:" + FileUpload1.PostedFile.ContentLength + " KB<br>" +
                          "文件MIME类型:" + FileUpload1.PostedFile.ContentType + "<br>" +
                          "保存路径:" + Server.MapPath("upload") + "\\" + FileUpload1.FileName;
        }
        catch (Exception ex)
        {
            Label1.Text = "发生错误:" + ex.Message.ToString();
        }
    }
    else
    {
        Label1.Text = "没有选择要上传的文件!";
    }

}

1.一次上传多个文件

要一次上传多个文件,我们可以像传单个文件那样对每个文件单独进行处理,除此之外,我们还可以使用HttpFileCollection类捕获从Request对象发送来的所有文件,然后再单独对每个文件进行处理,代码如下:

aspx.cs:

程序代码
protected void Button1_Click(object sender, EventArgs e)
{
    string filepath = Server.MapPath("upload") + "\\";
    HttpFileCollection uploadFiles = Request.Files;
    for (int i = 0; i < uploadFiles.Count; i++)
    {
        HttpPostedFile postedFile = uploadFiles[i];
        try
        {
            if (postedFile.ContentLength > 0)
            {
                Label1.Text += "文件 #" + (i + 1) + ":" + System.IO.Path.GetFileName(postedFile.FileName) + "<br/>";
                postedFile.SaveAs(filepath + System.IO.Path.GetFileName(postedFile.FileName));
            }
        }
        catch (Exception Ex)
        {
            Label1.Text += "发生错误: " + Ex.Message;
        }
    }
}

2.上传文件类型的验证

对上传文件类型的验证既可以在客户端进行,也可以在服务器端进行。客户端可以使用验证控件来进行,不过我们今天主要说说如何在服务器端进行验证。上边cs文件中已经用GetExtension获取了文件的扩展名,只要稍加判断即可实现上传类型的验证:

aspx.cs:

程序代码
protected void Button1_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        fileExt = System.IO.Path.GetExtension(FileUpload1.FileName);
        if (fileExt == ".rar" || fileExt == ".zip")
        {
            try
            {
                FileUpload1.SaveAs(Server.MapPath("upload") + "\\" + FileUpload1.FileName);
                Label1.Text = "客户端路径:" + FileUpload1.PostedFile.FileName + "<br>" +
                              "文件名:" + System.IO.Path.GetFileName(FileUpload1.FileName) + "<br>" +
                              "文件扩展名:" + System.IO.Path.GetExtension(FileUpload1.FileName) + "<br>" +
                              "文件大小:" + FileUpload1.PostedFile.ContentLength + " KB<br>" +
                              "文件MIME类型:" + FileUpload1.PostedFile.ContentType + "<br>" +
                              "保存路径:" + Server.MapPath("upload") + "\\" + FileUpload1.FileName;
            }
            catch (Exception ex)
            {
                Label1.Text = "发生错误:" + ex.Message.ToString();
            }
        }
        else
        {
            Label1.Text = "只允许上传rar、zip文件!";
        }
    }
    else
    {
        Label1.Text = "没有选择要上传的文件!";
    }

}

需要注意的是,我们不能过分依赖于客户端验证控件和服务器端上述方法的验证,因为用户只需将文件扩展名更改为允许的类型就可以避开上边的验证,这对用户来说并不是件困难的事情。

3.解决文件大小限制

在ASP.NET 2.0中FileUpload默认上传文件最大为4M,不过我们可以在web.cofig中修改相关节点来更改这个默认值,相关节点如下:

程序代码
<system.web>
    <httpRuntime maxRequestLength="40690" executionTimeout="6000" />
</system.web>

maxRequestLength表示可上传文件的最大值,executionTimeout表示ASP.NET关闭前允许发生的上载秒数。

4."multipart/form-data"和Request共存

在ASP程序中一旦使用表单上传文件(form的enctype属性值为multipart/form-data),服务器端就不能再用Request.Form来获取表单的值,这种限制在ASP.NET 2.0中已经不存在了:

aspx.cs:

程序代码
protected void Button1_Click(object sender, EventArgs e)
{
    if (FileUpload1.HasFile)
    {
        try
        {
            FileUpload1.SaveAs(Server.MapPath("upload") + "\\" + FileUpload1.FileName);
            Label1.Text = "上传文件:" + FileUpload1.FileName + "<br>" +
                          "说明:" + Request.Form["TextBox1"];//也可以用"TextBox1.Text"来获取说明
        }
        catch (Exception ex)
        {
            Label1.Text = "发生错误:" + ex.Message.ToString();
        }
    }
    else
    {
        Label1.Text = "没有选择要上传的文件!";
    }
}

转载于:https://www.cnblogs.com/nj0409/archive/2009/01/04/1368090.html

ASP.NET 2.0使用FileUpload控件上传文件示例相关推荐

  1. asp.net fileupload 文件上传后服务器上找不到文件,Asp.net中FileUpload控件上传文件例子...

    FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器.用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\MyFiles ...

  2. 解决FileUpload控件上传大文件被拒问题时

    在使用Asp.Net自带的服务器端控件Fileupload上传文件时,如果上传的文件比较大,可能会遇到服务器的拒绝服务攻击,此时可以通过在<system.web>中添加: <http ...

  3. 详述FileUpload 控件上传单文件

    第一步:添加两个Label控件,一个是用于标题显示,一个是用于上传完成消息提示. 第二步:创建一个FileUpload控件到Page页面,注意FileUpload控件本身只提供文件的选举操作,而实际的 ...

  4. .Net用UploadFile控件上传文件受到大小限制的解决办法

    一.缘由因.net引起的 方法一:(经过验证了) 错误提示: System.ObjectDisposedException: 无法访问已关闭的文件. 解决办法: 在web.config文件中添加如下语 ...

  5. 使用FileUpload控件上传前预览图片

    <table class="blue_table" cellpadding="0" cellspacing="0" border=&q ...

  6. Asp.net 2.0 中获取控件输出的Html代码 (转)

    将Asp.net 控件的呈现html获取,在不少场合会用到,比如生成静态页时 以下代码选自 Asp.net 2.0 高级编程 转自:Asp.net 2.0 中获取控件输出的Html代码 public  ...

  7. 母版中menu控件上传后出现脚本错误

    这几天帮朋友做个小网站,为了网站更容易扩展,所以使用了.menu控件做网站导行.本来在做的时候没出错,可上 传之后却显示不出,动态菜单的部分,并且提示脚本错误.于是乎上网开始找答案,找了大半天.终于找 ...

  8. 使用 SAP UI5 FileUploader 控件上传本地文件试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...

  9. 测试ASP.NET 2.0中Gridview控件高级技巧

    ASP.NET 2.0中,新增加的gridview控件的确十分强大,弥补了在asp.net 1.1中,使用datagrid控件时的不足之处.因为在asp.net 1.1中,在使用datagrid时,很 ...

最新文章

  1. java B2B2C源码电子商务平台 -commonservice-config配置服务搭建
  2. NYOJ 622 Vote
  3. kali mysql停止服务器_从零开始:手把手教你黑客入门攻破服务器并获取ROOT权限...
  4. mysql not default_MySQL的not null default
  5. Eclipse alt+/ 失效 解决
  6. python迭代器、生成器和yield语句
  7. Win7版IE10下载包中暗藏了DirectX 11.1
  8. react-native 学习
  9. 树莓派读写ABB变频器
  10. rstudio教程 java_RStudio的使用教程
  11. vue项目中使用 echarts 创建一个关系图
  12. PG使用 nlpbamboo chinesecfg 中文分词
  13. 心态调整--缘起性空
  14. C#面向对象编程的学习笔记
  15. 如何免费获取文件高速下载直链
  16. 数组转化为字符串,并用顿号隔开
  17. 犯了这5个UI设计错误你的APP就得失败啦
  18. 新年腾讯云优惠券买300减可以优惠40啊领取一个官方优惠券就可以了
  19. 如何在阿里云物联网平台上利用已有的 IoT Studio项目模板创建项目
  20. RGB与Lab颜色空间互相转换 持续更新中

热门文章

  1. 批量重命名下载的不规则电视剧文件名
  2. Unstack Machine - 上位机和下位机通讯
  3. 如何优雅地在 Word 中插入代码【转载】
  4. POS收银机 版本:v1.1
  5. 什么是 call 函数? call 函数的用法? call 函数的实现原理(实例演示)
  6. 用SPSS作洛伦兹曲线
  7. 拆解Google Play Services 4.4,猜想Google I/O 2014的新动向,Android Wear支持等
  8. (专升本)Excel(相同/不同工作簿下的工作表移动或复制)
  9. Logit模型和Logistic模型的区别
  10. 味尚食品 味尚拉面半干面是一种非常经典的中式面食