asp.net中同时上传多个文件

来源:互联网 发布:java开发超市管理系统 编辑:程序博客网 时间:2024/04/30 12:45

其实方法挺多的,比如用collection,arrarlist来收集要上传的文件集合,之后逐一遍历,下面使用arraylist
StyleSheet.css
.bluebutton
{
 background-color:LightSteelBlue;
 border-style:solid;
 border-width: 1px;
 border-color: LightSkyBlue;
}
attachme.aspx
<%@ Page language="c#" Codebehind="attachme.aspx.cs" AutoEventWireup="false"
     Inherits="webchange.attachme" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
     <HEAD>
     <title>attachme</title>
     <meta content="Microsoft Visual Studio 7.0" name="GENERATOR">
     <meta content="C#" name="CODE_LANGUAGE">
     <meta content="JavaScript" name="vs_defaultClientScript">
     <meta content="http://schemas.microsoft.com/intellisense/ie5"
              name="vs_targetSchema">
     <LINK href="StyleSheet.css" rel="stylesheet">
     </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="attachme" method="post" encType="multipart/form-data" runat="server">
            <INPUT class="bluebutton" id="FindFile" style="Z-INDEX: 101; LEFT: 36px;
                      WIDTH: 274px; POSITION: absolute; TOP: 123px; HEIGHT: 22px"
                      type="file" size="26" runat="server" NAME="FindFile">
            <asp:listbox id="ListBox1" style="Z-INDEX: 102; LEFT: 36px;
                      POSITION: absolute; TOP: 149px" runat="server" CssClass="txtbox"
                      Height="100px" Width="274px" Font-Size="XX-Small"></asp:listbox>
            <asp:button id="AddFile" style="Z-INDEX: 103; LEFT: 34px; POSITION: absolute;
                      TOP: 254px" runat="server" CssClass="bluebutton" Height="23px"
                      Width="72px" Text="Add"></asp:button>
            <asp:button id="RemvFile" style="Z-INDEX: 104; LEFT: 119px;
                      POSITION: absolute; TOP: 255px" runat="server"
                      CssClass="bluebutton"
                      Height="23px" Width="72px" Text="Remove"></asp:button>
            <INPUT class="bluebutton" id="Upload" style="Z-INDEX: 105; LEFT: 236px;
                      WIDTH: 71px; POSITION: absolute; TOP: 254px; HEIGHT: 24px"
                      type="submit" value="Upload" runat="server"
                      onserverclick="Upload_ServerClick" NAME="Upload">
        </form>
        <asp:label id="Label1" style="Z-INDEX: 106; LEFT: 46px; POSITION: absolute;
                      TOP: 326px" runat="server" Height="25px"
                      Width="249px"></asp:label>
    </body>
</HTML>

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;


namespace webchange
{
    /// <summary>
    /// attachme allows for multiple files to be uploaded to your web server while using
    /// only one HttpInputFile control and a listbox.
    /// </summary>
    public class attachme : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.ListBox ListBox1;
        protected System.Web.UI.WebControls.Button AddFile;
        protected System.Web.UI.WebControls.Button RemvFile;
        protected System.Web.UI.HtmlControls.HtmlInputFile FindFile;
        protected System.Web.UI.HtmlControls.HtmlInputButton Upload;
        protected System.Web.UI.WebControls.Label Label1;
        protected System.Web.UI.HtmlControls.HtmlGenericControl txtOutput;
        public ArrayList files = new ArrayList();
                static public ArrayList hif = new ArrayList();
        public int filesUploaded = 0;
   
        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
       
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {   
            this.RemvFile.Click += new System.EventHandler(this.RemvFile_Click);
            this.AddFile.Click += new System.EventHandler(this.AddFile_Click);
            this.Upload.ServerClick += new System.EventHandler(this.Upload_ServerClick);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion

        /// <summary>
        /// AddFile will add the path of the client side file that is currently in the
        /// PostedFile
        /// property of the HttpInputFile control to the listbox.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AddFile_Click(object sender, System.EventArgs e)
        {
            if (Page.IsPostBack == true)
            {
                hif.Add(FindFile);
                ListBox1.Items.Add(FindFile.PostedFile.FileName);
            }
            else
            {
               
            }
        }

        /// <summary>
        /// RemvFile will remove the currently selected file from the listbox.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void RemvFile_Click(object sender, System.EventArgs e)
        {
            if(ListBox1.Items.Count != 0)
            {
                hif.RemoveAt(ListBox1.SelectedIndex);
                ListBox1.Items.Remove(ListBox1.SelectedItem.Text);
            }
       
        }

        /// <summary>
        /// Upload_ServerClick is the server side script that will upload the files to
        /// the web server
        /// by looping through the files in the listbox.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Upload_ServerClick(object sender, System.EventArgs e)
        {
            string baseLocation = "C://temp//";
            string status = "";
           
           
            if((ListBox1.Items.Count == 0) && (filesUploaded == 0))
            {
                Label1.Text = "Error - a file name must be specified.";
                return;

            }
            else
            {
                foreach(System.Web.UI.HtmlControls.HtmlInputFile HIF in hif)
                {
                    try
                    {
                        string fn = System.IO.Path.GetFileName(HIF.PostedFile.FileName);
                        HIF.PostedFile.SaveAs(baseLocation + fn);
                        filesUploaded++;
                        status += fn + "<br>";
                    }
                    catch(Exception err)
                    {
                        Label1.Text = "Error saving file " + baseLocation
                                                           + "<br>" + err.ToString();
                    }
                }

                if(filesUploaded == hif.Count)
                {
                    Label1.Text = "These " + filesUploaded + " file(s) were "
                                           + "uploaded:<br>" + status;
                }
                hif.Clear();
                ListBox1.Items.Clear();
            }
        }

    }
}

 

原创粉丝点击