程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 多文件上傳

多文件上傳

編輯:.NET實例教程
這是我開發過程中用涉及到的一個功能,現在備份下來。
首先是在web.confing中做限制上傳大小配置和超時的配置,httpruntime的節點下有executionTimeout,maxRequestLength兩個屬性。executionTimeout設置超時的時間值,默認的為90秒,如果超出這個時間,浏覽器就會受到一個超時錯誤的通知,可以自己設置但一般不要太長啦,maxRequestLength就是設置文件的大小的,一般默認為4MB,這個太小了,我在做的過程中就是一開始沒設置這個屬性,測試時候傳了個10MB的文件,把系統給搞死啦^_^,具體設置如下:
<httpRuntimeexecutionTimeout="90"maxRequestLength="20480"/>
   接下來就是動態的創建,上傳文件的控件,我是用一個腳本創建的,當然也可以用其他的方法,這個我在網上找過,但感覺沒這個好就用這個啦,為了減輕服務器的壓力,在這做了下限制上傳文件的個數,最多不能超過5個。
        var i=1
        function addFile()
        {
         if (i<6)
            {var str = '<BR> <input type="file" name="File" runat="server" />'
            document.getElementById('MyFile').insertAdjacentHtml("beforeEnd",

str)
            }
        else
            {
                alert("您一次最多只能上傳5個附件!")
            }
            i++
        }
最後就是後台的實現啦,先判斷下文件的大小,別超過限制的大小,然後判斷下文件的格式,然後用Directory的CreateDirectory()方法創建一個存放的文件夾,然後用一個for循環存就好了,具體實現如下:
#region My method of upload file
        ///<summary>
        /// Upload file method of method
        ///</summary>
        protected void UpLoadFile()
        {
            System.Web.HttpFileCollection files = System.Web.HttpContext>.Current.Request.Files;
            StringBuilder strmsg = new StringBuilder("");
            int ifile;
            for (ifile = 0; ifile < files.Count; ifile++)
            {
                if (files[ifile].FileName.Length > 0)
                {
                    System.Web.HttpPostedFile postedfile = files[ifile];
                    if (postedfile.ContentLength / 10240 > 10240)//單個文件不能大於k
                    {
                        strmsg.Append(Path.GetFileName(postedfile.FileName) + "---不能大於k<br>");

pt">                        break;
                    }
                    string fex = Path.GetExtension(postedfile.FileName);
                    if (fex != ".jpg" && fex != ".JPG" && fex != ".gif" && fex != ".GIF" && fex != ".doc" && fex != ".xls" && fex != ".txt")
                    {
                        strmsg.Append(Path.GetFileName(postedfile.FileName) + "---文件格式不對,只能是jpg,gif,doc,xls或txt!<br>");
                        break;
                    }


                }
            }
 
            if (strmsg.Length <= 0)//說明附件大小和格式都沒問題
   &nbsp;        {
                //以下為創建附件目錄
                string dirpath = Server.MapPath("上傳附件");
 
                if (Directory.Exists(dirpath) == false)
                {
                    Directory.CreateDirectory(dirpath);
                }
            
                for (int i = 0; i < files.Count; i++)
                {
                    System.Web.HttpPostedFile myFile = files[i];
                    string FileName = "";
                    string FileExtention = "";
                    FileName = System.IO.Path.GetFileName(myFile.FileName);
 
                    if (FileName.Length > 0)//有文件才執行上傳操作再保存數據庫
                    {
                        FileExtention = System.IO.Path.GetExtension(myFile.FileName);//得到文件得後綴名
 
                        string ppath = dirpath + @"\" + FileName ;


                        myFile.SaveAs(ppath);
 
                        ticket.IntAttachment(TBTicketNumber.Text, FileName, ppath, tbAttachment.Text);//插入數據庫
                    }
                }
 
                lbMess.Text = "恭喜,工單創建成功!";
            }
            else
            {
                lbMess.Text = strmsg.ToString();
                lbMess.Visible = true;
            }
        }
         #endregion 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved