两种方式:
1、如果页面中form指定了enctype="multipart/form-data" 属性则可以无file服务器控件
2、如果页面上有初始的file服务器控件(必须有runat="server"标志)可以无enctype="multipart/form-data"属性,但是这个页面上必须至少有一个runat="server"的file控件,否则后台接收不equest.Files。
<%@ Page language="c#" Codebehind="MultiAttchments.aspx.cs" AutoEventWireup="false" Inherits="WebApplication3.MultiAttchments" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
      <HEAD>
            <script>
            function AddAttachments()
            {
                  document.getElementById('attach').innerText = "继续添加附件";
                 
                  tb = document.getElementById('attAchments');                 
                  newRow = tb.insertRow();
                  newRow.insertCell().innerHTML = "<input name='File' size='50' type='file'>&nbsp;&nbsp;<input type=button value='删除' onclick='delFile(this.parentElement.parentElement.rowIndex)'>";
            }
            function delFile(index)
            {
                  document.getElementById('attAchments').deleteRow(index);
                  tb.rows.length > 0?document.getElementById('attach').innerText = "继续添加附件":document.getElementById('attach').innerText = "添加附件";
            }
            </script>
      </HEAD>
      <body MS_POSITIONING="GridLayout">
            <form id="form1" method="post" runat="server" enctype="multipart/form-data">
            <div><table id="attAchments"></table></div><span><IMG src="icoAddFl.gif"> </span> <A id="attach" style="font-family:宋体;font-size:9pt;" title="如果您要发送多个附件,您只需多次点击“继续添加附件”即可, 要注意附件总量不能超过发送限制的大小。" onclick="AddAttachments();"
                        href="javascript:;" name="attach">添加附件</A>
                  <br><br><br><br><br><br>
                  <asp:Button id="btnSend" runat="server" Text=" 上传 "></asp:Button>
            </form>
      </body>
</HTML>
private void btnSend_Click(object sender, System.EventArgs e)
{
      StringBuilder sb = new StringBuilder();

      int attCount = 0;
      string filePath = "";
            for(int i=0; i< Request.Files.Count; i++)
            {
                  if(Request.Files[i].ContentLength > 0)
                  {
                        filePath = Request.Files[i].FileName;
                        sb.Append("Files" + attCount++ + ": " + filePath + "<br>");
                        Request.Files[0].SaveAs(Server.MapPath("./") + filePath.Substring(filePath.LastIndexOf("\\")+1));
                  }
            }
      sb.Insert(0, "you upload " + attCount + " files.<br>");
      Response.Write(sb.ToString());
}

注意对于超出默认大小的文件需修改配置文件

<configuration>
        <system.web>
              <httpRuntime   maxRequestLength="10000"
                      useFullyQualifiedRedirectUrl="true"
                      executionTimeout="45"/>
          </system.web>
</configuration>
需要将machine.config或web.config中的<httpRuntime>   section的maxRequestLength值作相应的修改.

===========================================
//html文件
<form id="form1" runat="server" >
<div id="fileupload_div"><span>作品:</span>
            <asp:FileUpload ID="FileUpload1" runat="server" />
            <INPUT TYPE="button" VALUE="添加附件" onclick="javascript:AddFile();">
            <INPUT TYPE="button" VALUE="删除附件" onclick="javascript:RemoveFile();">
            <asp:ListBox ID="ListBox1" runat="server" Height="120px" Width="252px"></asp:ListBox>   
        </div>
</form>



// JScript 文件
//注结合jquery+jquery selecte pulgin http://www.texotela.co.uk/code/jquery/select/
function AddFile()
{
    var fileupload=$("input[type=file]")[0];
    if(fileupload.value == "")
    {
        alert("请选择要上传的文件!");
        return;
    }
    var ary = fileupload.value.split("\\");
    var filename = ary[ary.length-1];
    var bAddFile = true;
    if(CheckOptionsExists(filename,$("#ListBox1")[0]))
    {
        alert("文件已经存在列表中!");
        $("#fileupload_div")[0].removeChild(fileupload);
        bAddFile = false;
    }
    var newfile = document.createElement("input");
    newfile.type ="file";
    newfile.name ="file";
    $("#fileupload_div")[0].insertBefore(newfile,$("#fileupload_div")[0].firstChild);
    if(!bAddFile)
    {
    return
    }
    //var o = new Option(filename,fileupload.uniqueID);
    //$("#ListBox1")[0].add(o); //IE only
    $("#ListBox1").addOption(fileupload.uniqueID,filename,false);
    fileupload.style.display = "";
       
}
function CheckOptionsExists(value,ddl)
{
    for(var i=0;i<ddl.options.length;i++)
    {
        if(ddl.options[i].innerText == value)
        {
            return true;
        }
    }
    return false;
}
function RemoveFile()
{
    var lst = $("#ListBox1")[0];
    if(lst.selectedIndex == -1)
    {
        alert("请选择要删除的附件!");
        return;
    }
   
    var id = lst.options[lst.selectedIndex].value;
    //alert( lst.options[lst.selectedIndex].value);
     $("#fileupload_div")[0].removeChild(document.all[id]);
    lst.removeChild(lst.options[lst.selectedIndex]);
     $("#fileupload_div")[0].firstChild.style.display = "";
    
}
posted on 2009-09-06 22:23  momo0789  阅读(1684)  评论(0编辑  收藏  举报