.net 实现多文件上传

今天用到了同时上传多个文件,自己写了段代码来实现这个功能。可以在其中限制文件大小,上传格式。但是没有做数量的限制。估计传多了也自然会失败吧。具体ContentType里对应的值,请参考我的另一篇文章 [url]http://www.cnblogs.com/mgod/archive/2007/04/24/725200.html[/url]
.CS的代码如下
protected   bool  upMorefile()
    
{
        
        
//遍历File表单元素
        System.Web.HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
        
//状态信息
        System.Text.StringBuilder strMsg = new System.Text.StringBuilder("成功上传的文件信息分别为:<hr color=red>");
        
int fileCount;
        
int filecount = files.Count;
        
       
        
try
        
{
            
for (fileCount = 0; fileCount < files.Count; fileCount++)
            
{
                
//定义访问客户端上传文件的对象
                System.Web.HttpPostedFile postedFile = files[fileCount];
                
string FileType = postedFile.ContentType.ToString();//获取要上传的文件类型,验证文件头  

                
string fileName, fileExtension;
                
//取得上传得文件名
                fileName = System.IO.Path.GetFileName(postedFile.FileName);
                
//取得文件的扩展名
                fileExtension = System.IO.Path.GetExtension(fileName);

                
//在上传文件不为空的情况下,验证文件名以及大小是否符合,如果不符合则不允许上传
                if (((FileType == "text/plain" && fileExtension.ToLower() == ".txt"|| (FileType == "application/x-zip-compressed" && fileExtension.ToLower() == ".zip"|| (FileType == "application/octet-stream" && fileExtension.ToLower() == ".rar"))&&postedFile.ContentLength/1024<=1024)
                
{//在这里通过检查文件头与文件名是否匹配 从而限制了文件上传类型  注:可上传的类型有TXT,ZIP,RAR,且大小只能为1M一下
                    
                    
if (fileName != String.Empty)
                    
{
                        fileName 
= RandomFileName() + fileExtension;
                        
                        
//上传的文件信息
                        strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "<br>");
                        strMsg.Append(
"客户端文件地址:" + postedFile.FileName + "<br>");
                        strMsg.Append(
"上传文件的文件名:" + fileName + "<br>");
                        strMsg.Append(
"上传文件的大小为:" + postedFile.ContentLength + "字节<br>");
                        strMsg.Append(
"上传文件的扩展名:" + fileExtension + "<br><hr color=red>");
                        
//保存到指定的文件夹
                        postedFile.SaveAs(Server.MapPath("public_file/" + UserName + "/"+ fileName);
                        fileName 
= "";

                    }

                }

                
else
                
{
                    strStatus.Text
+= ""+(fileCount+1)+"个文件不符合要求<br/>  ";
                    
                }

                
            }

            
            strStatus.Text 
+= strMsg.ToString();
            
return true;
        }

        
catch (System.Exception error)
        
{
            strStatus.Text 
= error.Message;
            
return false;

        }

    }



    
protected   void  Upload_Click( object  sender, EventArgs e)
    
{
        strStatus.Text 
= "";//讲提示信息清空
        upMorefile();//调用上传类

    }


public   string  RandomFileName()
    
{//返回随机数的类
        string filename = "";
        
string r1 = "";
        
string r2 = "";
        
string r4 = "";
        Random random 
= new Random();
        r1 
= ((char)random.Next(6590)).ToString();//大写字母
        r2 = ((char)random.Next(97122)).ToString();//小写字母        
        r4 = random.Next(10000999999).ToString();
        filename 
= DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + r1 + r4 + r2 + r1 + r4 + r1;

        
return filename;

    }



前台代码如下
< script  language ="JavaScript" >
            
function addFileControl()
            
{
                
var str = '<INPUT type="file" NAME="File">'
                document.getElementById('FileCollection').insertAdjacentHTML(
"beforeEnd",str)
            }

    
</ script >
    

            
< asp:Panel  ID ="PanelFileManage"  runat ="server"  Width ="100%" >
        
        
< id ="FileCollection" >< INPUT  type ="file"  name ="File" > &nbsp; </ P >
                
< align ="center"  style ="color:Red" >
                    允许上传的类型为:ZIP,RAR,TXT,大小为1M以下
</ p >
            
< align ="center" >< input  onclick ="addFileControl()"  type ="button"  value ="增加(File)" >
                
< asp:button  id ="Upload"  Runat ="server"  Text ="上传"  Width ="56px"  OnClick ="Upload_Click" ></ asp:button >
                
< input  style ="WIDTH: 56px; HEIGHT: 24px"  onclick ="this.form.reset()"  type ="button"  value ="重置" >
            
</ P >
            
< align ="center" >< asp:label  id ="strStatus"  runat ="server"  BorderColor ="White"  BorderStyle ="None"  Width ="500px"
                    Font-Size
="9pt"  Font-Bold ="True"  Font-Names ="宋体" ></ asp:label ></ P >
        
    
</ asp:Panel >  

并且一定要注意在form中添加一个enctype项,才可以使用。如下:
< form  id ="form1"  runat ="server"  enctype ="multipart/form-data" >

本文出自 “赤色火焰.Net_学习手札” 博客,转载请与作者联系!

你可能感兴趣的:(.net,职场,休闲,实现多文件上传)