首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

怎么实现多文件上传

2013-10-05 
如何实现多文件上传我这里只能实现一个,我想知道如何添加新加入按钮的文件信息using Systemusing System.

如何实现多文件上传
我这里只能实现一个,我想知道如何添加新加入按钮的文件信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using System.Web.UI.HtmlControls;

namespace 文件的上传与管理
{
    public partial class FileUp : System.Web.UI.Page
    {
        CommonClass cc = new CommonClass();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                SaveFUC();
            }

        }
        protected void SaveFUC()//保存当前页面上传文件控件集到缓存中
        {
            ArrayList AL = new ArrayList();//创建动态数组
            foreach (Control C in tabFU.Controls)
            {
                if (C.GetType().ToString() == "System.Web.UI.HtmlControls.HtmlTableRow")
                {
                    HtmlTableCell HTC = (HtmlTableCell)C.Controls[0];
                    foreach (Control FUC in HTC.Controls)
                    {  
                        //判断是否为上传控件(Fileuplode)如果是添加到ArrayList中
                        if (FUC.GetType().ToString() == "System.Web.UI.WebControls.FileUpload")
                        {
                            FileUpload FU = (FileUpload)FUC;
                            AL.Add(FU);

                        
                        }
                    }
                
                }
            
            }
            //将Arraylist中所有的上传控件添加到缓存中
            Session.Add("FilesControl", AL);

        }
        public void GetFUCInfo()
        {
            ArrayList AL = new ArrayList();
            if (Session["FilesControl"] != null)
            { 
              //将缓存中上传控件集放到array中
                AL = (System.Collections.ArrayList)Session["FilesControl"];
                for (int i = 0; i < AL.Count; i++)
                {
                    HtmlTableRow HTR = new HtmlTableRow();
                    HtmlTableCell HTC = new HtmlTableCell();
                    HTC.Controls.Add((System.Web.UI.WebControls.FileUpload)AL[i]);


                    HTR.Controls.Add(HTC);
                    tabFU.Rows.Add(HTR);//将上传控件添加到名为tabFU的表格中
                }
            }
        }
        protected void InsertFUC()
        {
            ArrayList AL = new ArrayList();
            this.tabFU.Rows.Clear();
            //调用GetFUCInfo方法,将放在缓存中的控件添加到表格中
            GetFUCInfo();
            HtmlTableRow HTR = new HtmlTableRow();
            HtmlTableCell HTC = new HtmlTableCell();
            HTC.Controls.Add(new FileUpload());
            HTR.Controls.Add(HTC);
            tabFU.Rows.Add(HTR);
            SaveFUC();

        }
        public static int IntlsUF=0;
        protected void UPFile()//执行上传操作,并插入数据表中
        {
            string filePath = fu1.PostedFile.FileName;//获取上传路径
            string fileName = filePath.Substring(filePath.LastIndexOf("\") + 1);//获取文件名baocun
            string fileSize = Convert.ToString(fu1.PostedFile.ContentLength);//获取文件大小
            string fileExtend = filePath.Substring(filePath.LastIndexOf(".") + 1);//获取扩展名
            string fileType = fu1.PostedFile.ContentType;//获取文件类型
            string serverPath = Server.MapPath("") + fileName;//保存到服务器的路径
            HttpFileCollection HFC = Request.Files;
            for(int i=0;i<HFC.Count;i++)
            {
                    HttpPostedFile UseHPF=HFC[i];//对客户上传的文件单独访问

             try
             {
                 if (UseHPF.ContentLength > 0)
                 {
                     //调用GetAuto方法获得文件自动编号
                     int IntFieldID = cc.GetAutoID("fileID", "信息表");
                     //文件真名
                     //实现多个文件上传,不被覆盖
                     string strFileTName = "[" + IntFieldID + "]" + System.IO.Path.GetFileName(UseHPF.FileName);
                     //定义字符串,将上传文件保存到数据库中
                     string sqlStr = "insert into 信息表(fileID,fileName,fileUpDate,fileLoad,fileTrueName)";
                     sqlStr += " values('" + IntFieldID + "'";
                     sqlStr += ",'" + System.IO.Path.GetFileName(UseHPF.FileName) + "'";
                     sqlStr += ",'" + DateTime.Now.ToLongDateString() + "'";
                     sqlStr += ",'" + filePath+ "'";


                     sqlStr += ",'" + strFileTName + "')";
                     int j= cc.Execu(sqlStr);
                     if (j > 0)
                     {
                         //将上传的文件放到指定的文件夹中
                         UseHPF.SaveAs(serverPath);//确定上传文件
                         IntlsUF = 1;
                     }
                   

                     

                 }
             }
             catch
             {
                 //上传失败时,清空缓存,从新上传
                 if (Session["FilesControl"]!= null)
                 {

                     Session.Remove("FilesControl");
                 }
                 Response.Write(cc.MessageBox("处理出错", "FileUp.aspx"));
                 return;
             
             }
                //当上传成功或者没有上传文件时,清空上传控件集
                if(Session["FilesControl"]!=null)
                {
                    Session.Remove("FilesControl");

                }
                if (IntlsUF == 1)
                {
                    Response.Write(cc.MessageBox("处理成功", "FileUp.aspx"));

                }
                else
                {
                    Response.Write(cc.MessageBox("请选择上传文件", "FileUp.aspx"));
                }
            }

        
        }

        protected void bt_addUplode_Click(object sender, EventArgs e)
        {
            InsertFUC();
        }

        protected void bt_uplode_Click(object sender, EventArgs e)
        {
       
            UPFile();
        }
    }
}


[解决办法]
http://bbs.csdn.net/topics/380169102

建议你先使用DataList实现功能,那样几乎不用写什么代码,而不用写这么一大堆错误的代码。

热点排行