ASP.NET 多文件上传

前台代码:

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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>多文件上传</title>

    <script type="text/javascript">
        function addFile() {
            var str = '<BR/><INPUT type="file" size="50" NAME="File">';
            document.getElementById('MyFile').insertAdjacentHTML("beforeEnd", str);
            return false;
        }
    </script>

</head>
<body>
    <form id="form1" method="post" runat="server" enctype="multipart/form-data">
    <div align="center">
        <h3>
            多文件上传</h3>
        <p id="MyFile">
            <input type="file" size="50" name="File"></p>
        <p>
            <asp:Button ID="btnAdd" runat="server" OnClientClick="javascript:return addFile();" Text="增加(Add)" />
            <asp:Button ID="btnReset" runat="server" OnClientClick="javascript:location.reload()" Text="重置(ReSet)" />
            <asp:Button runat="server" Text="开始上传" ID="UploadButton" OnClick="UploadButton_Click" />
        </p>
        <p>
            <asp:Label ID="strStatus" runat="server" Font-Names="宋体" Font-Bold="True" Font-Size="9pt"
                Width="500px" BorderStyle="None" BorderColor="White"></asp:Label>
        </p>
    </div>
    </form>
</body>
</html>



后台代码:

Default.aspx.cs

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    private Boolean SaveImages()
    {
        ///'遍历File表单元素
        HttpFileCollection files = HttpContext.Current.Request.Files;

        /// '状态信息
        System.Text.StringBuilder strMsg = new System.Text.StringBuilder();
        strMsg.Append("上传的文件分别是:<hr color=red>");
        try
        {
            for (int iFile = 0; iFile < files.Count; iFile++)
            {
                ///'检查文件扩展名字
                HttpPostedFile postedFile = files[iFile];
                string fileName, fileExtension;
                fileName = System.IO.Path.GetFileName(postedFile.FileName);
               
                if (fileName != "")
                {
                    fileExtension = System.IO.Path.GetExtension(fileName);
                    //更改文件名称
                    fileName = Guid.NewGuid() + fileExtension;
                    strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "<br>");
                    strMsg.Append("客户端文件地址:" + postedFile.FileName + "<br>");
                    strMsg.Append("上传文件的文件名:" + fileName + "<br>");
                    strMsg.Append("上传文件的扩展名:" + fileExtension + "<br><hr>");
                    ///'可根据扩展名字的不同保存到不同的文件夹
                    ///注意:可能要修改你的文件夹的匿名写入权限。
                    postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("Images/") + fileName);
                }
            }
            strStatus.Text = strMsg.ToString();
            return true;
        }
        catch (System.Exception Ex)
        {
            strStatus.Text = Ex.Message;
            return false;
        }
    }

    protected void UploadButton_Click(object sender, EventArgs e)
    {
        this.SaveImages();
    }
}

==================================================================================

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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>多文件上传</title>

    <script type="text/javascript">

        var flen = 0;
        function add_file(delete_code) {
            var up_cnt = 5;
            if (up_cnt && flen >= up_cnt) {
                alert("最多只能上传 " + up_cnt + "个附件");
                return;
            }

            var objTbl;
            var objRow;
            var objCell;
            if (document.getElementById)
                objTbl = document.getElementById("UpFiles");
            else
                objTbl = document.all["UpFiles"];

            objRow = objTbl.insertRow(objTbl.rows.length);
            objCell = objRow.insertCell(0);

            objCell.innerHTML = "FILE" + (flen + 1) + " : <input type='file' class='field' name='userfile[]' id='userfile[]' title='파일 용량 10,247,680 바이트 이하만 업로드 가능' /><br/><span style=\"FONT-SIZE: 8pt; COLOR: gray; FONT-FAMILY: 돋움\" disabled>메모</span>:<input type='text'  name='filememo[]' id='filememo[]'  size='70' class='font9pt' title='업로드파일설명을 간단히 적어주세요'/><hr width='100%'>";
            if (delete_code)
                objCell.innerHTML += delete_code;
            else {
                ;
            }

            flen++;
        }

        function del_file() {
            // file_length 이하로는 필드가 삭제되지 않아야 합니다.
            var file_length = 0;
            var objTbl = document.getElementById("UpFiles");
            if (objTbl.rows.length - 1 > file_length) {
                objTbl.deleteRow(objTbl.rows.length - 1);
                flen--;
            }
        }
    </script>

</head>
<body onload="add_file(' ')">
    <form id="form1" method="post" runat="server" enctype="multipart/form-data">
    <div align="center">
        <table width="70%" border="1" style="border-color: Red" cellspacing="0" cellpadding="0">
            <tr>
                <td height="30" width="334px" align="center" bgcolor="#EEEEEE">
                    添加附件<br />
                    (最多上传5个)
                    <br>
                    <span onclick="add_file();" style="cursor: pointer;">+</span> <span onclick="del_file();"
                        style="cursor: pointer;">-</span>
                </td>
                <td>
                    <table id="UpFiles" border="1" cellpadding="0" style="background-color: Green;" cellspacing='0'
                        width="100%">
                    </table>
                </td>
            </tr>
        </table>
    </div>
    <div align="center">
        <p id="MyFile">
            <asp:Button runat="server" Text="开始上传" ID="UploadButton" OnClick="UploadButton_Click" />
        </p>
        <p>
            <asp:Label ID="strStatus" runat="server" Font-Names="宋体" Font-Bold="True" Font-Size="9pt"
                Width="500px" BorderStyle="None" BorderColor="White"></asp:Label>
        </p>
    </div>
    </form>
</body>
</html>

posted on 2008-06-24 13:13  NullReferenceException  阅读(408)  评论(0)    收藏  举报