.net 实现多文件上传

       今天用到了同时上传多个文件,自己写了段代码来实现这个功能。可以在其中限制文件大小,上传格式。但是没有做数量的限制。估计传多了也自然会失败吧。具体ContentType里对应的值,请参考我的另一篇文章 http://www.cnblogs.com/mgod/archive/2007/04/24/725200.html
.CS的代码如下

.net 实现多文件上传 protected   bool  upMorefile()
.net 实现多文件上传    
{
.net 实现多文件上传        
.net 实现多文件上传        
//遍历File表单元素
.net 实现多文件上传
        System.Web.HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;
.net 实现多文件上传        
//状态信息
.net 实现多文件上传
        System.Text.StringBuilder strMsg = new System.Text.StringBuilder("成功上传的文件信息分别为:<hr color=red>");
.net 实现多文件上传        
int fileCount;
.net 实现多文件上传        
int filecount = files.Count;
.net 实现多文件上传        
.net 实现多文件上传       
.net 实现多文件上传        
try
.net 实现多文件上传        
{
.net 实现多文件上传            
for (fileCount = 0; fileCount < files.Count; fileCount++)
.net 实现多文件上传            
{
.net 实现多文件上传                
//定义访问客户端上传文件的对象
.net 实现多文件上传
                System.Web.HttpPostedFile postedFile = files[fileCount];
.net 实现多文件上传                
string FileType = postedFile.ContentType.ToString();//获取要上传的文件类型,验证文件头  
.net 实现多文件上传

.net 实现多文件上传                
string fileName, fileExtension;
.net 实现多文件上传                
//取得上传得文件名
.net 实现多文件上传
                fileName = System.IO.Path.GetFileName(postedFile.FileName);
.net 实现多文件上传                
//取得文件的扩展名
.net 实现多文件上传
                fileExtension = System.IO.Path.GetExtension(fileName);
.net 实现多文件上传
.net 实现多文件上传                
//在上传文件不为空的情况下,验证文件名以及大小是否符合,如果不符合则不允许上传
.net 实现多文件上传
                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)
.net 实现多文件上传                
{//在这里通过检查文件头与文件名是否匹配 从而限制了文件上传类型  注:可上传的类型有TXT,ZIP,RAR,且大小只能为1M一下
.net 实现多文件上传
                    
.net 实现多文件上传                    
if (fileName != String.Empty)
.net 实现多文件上传                    
{
.net 实现多文件上传                        fileName 
= RandomFileName() + fileExtension;
.net 实现多文件上传                        
.net 实现多文件上传                        
//上传的文件信息
.net 实现多文件上传
                        strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "<br>");
.net 实现多文件上传                        strMsg.Append(
"客户端文件地址:" + postedFile.FileName + "<br>");
.net 实现多文件上传                        strMsg.Append(
"上传文件的文件名:" + fileName + "<br>");
.net 实现多文件上传                        strMsg.Append(
"上传文件的大小为:" + postedFile.ContentLength + "字节<br>");
.net 实现多文件上传                        strMsg.Append(
"上传文件的扩展名:" + fileExtension + "<br><hr color=red>");
.net 实现多文件上传                        
//保存到指定的文件夹
.net 实现多文件上传
                        postedFile.SaveAs(Server.MapPath("public_file/" + UserName + "/"+ fileName);
.net 实现多文件上传                        fileName 
= "";
.net 实现多文件上传
.net 实现多文件上传                    }

.net 实现多文件上传                }

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

.net 实现多文件上传                
.net 实现多文件上传            }

.net 实现多文件上传            
.net 实现多文件上传            strStatus.Text 
+= strMsg.ToString();
.net 实现多文件上传            
return true;
.net 实现多文件上传        }

.net 实现多文件上传        
catch (System.Exception error)
.net 实现多文件上传        
{
.net 实现多文件上传            strStatus.Text 
= error.Message;
.net 实现多文件上传            
return false;
.net 实现多文件上传
.net 实现多文件上传        }

.net 实现多文件上传    }

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

.net 实现多文件上传    }

.net 实现多文件上传
.net 实现多文件上传
public   string  RandomFileName()
.net 实现多文件上传    
{//返回随机数的类
.net 实现多文件上传
        string filename = "";
.net 实现多文件上传        
string r1 = "";
.net 实现多文件上传        
string r2 = "";
.net 实现多文件上传        
string r4 = "";
.net 实现多文件上传        Random random 
= new Random();
.net 实现多文件上传        r1 
= ((char)random.Next(6590)).ToString();//大写字母
.net 实现多文件上传
        r2 = ((char)random.Next(97122)).ToString();//小写字母        
.net 实现多文件上传
        r4 = random.Next(10000999999).ToString();
.net 实现多文件上传        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;
.net 实现多文件上传
.net 实现多文件上传        
return filename;
.net 实现多文件上传
.net 实现多文件上传    }

.net 实现多文件上传

前台代码如下

.net 实现多文件上传 < script  language ="JavaScript" >
.net 实现多文件上传            
function addFileControl()
.net 实现多文件上传            
{
.net 实现多文件上传                
var str = '<INPUT type="file" NAME="File">'
.net 实现多文件上传                document.getElementById('FileCollection').insertAdjacentHTML(
"beforeEnd",str)
.net 实现多文件上传            }

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

并且一定要注意在form中添加一个enctype项,才可以使用。如下:

.net 实现多文件上传 < form  id ="form1"  runat ="server"  enctype ="multipart/form-data" >

你可能感兴趣的:(多文件上传)