日期:2014-05-16  浏览次数:20999 次

asp.net 实现上传文件

利用FileUpload控件


1.单文件上传


aspx前台页面:

<div>
        <asp:FileUpload ID="FileUpload1" runat="server" />
        <asp:Button ID="Button1" runat="server" Text="上传文件" onclick="Button1_Click" /></br>
        <asp:Label ID="Label1" runat="server" Height="269px" Text="Label" Width="360px"></asp:Label>
</div>



单击上传文件按钮,后台事件

    protected void Button1_Click(object sender, EventArgs e)
    {
        String savePath = @"F:\upload\"; //保存路径
        if (FileUpload1.HasFile)  //如果有文件上传
        {
            try
            {
                String filename; //文件名
                filename = FileUpload1.FileName; //得到文件名
                savePath += filename; //路径+文件名
                FileUpload1.SaveAs(savePath); //将上传文件的内容保存到服务器上指定的路径
                Page.Response.Write(FileUpload1.PostedFile.ContentType + "</br>" + FileUpload1.PostedFile.ContentLength + "</br>"); //返回上传的文件的MIME类型和文件大小
                Page.Response.Write("上传成功");
            }
            catch (Exception ex)
            {
                Response.Write("出错:" + ex.Message.ToString());
            }
        }
        else
        {
            Response.Write("没有文件,请选择");
        }
    }

2.多文件上传

多文件上传可以利用多个单文件上传逐个进行处理,也可以利用HttpFileCollection从表单中获得所有文件,然后逐个存入服务器


前台页面再增加一个FileUpload控件;

后台代码如下:


    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) //文件大小大于0
                {
                    Response.Write("文件" + i.ToString() +
                        System.IO.Path.GetFileName(postedFile.FileName) +
                        "<br/>");
                    postedFile.SaveAs(filepath + System.IO.Path.GetFileName(postedFile.FileName));//存入服务器
                }
            }
            catch (Exception ex)
            {
                Response.Write("出错" + ex.Message.ToString());
            }
        }

关于上传文件大小的限制

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


〈system.web>
    〈httpRuntime maxRequestLength="40690" executionTimeout="6000" />
〈/system.web>

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