首页  ·  知识 ·  云计算
允许一次上传多个文件的设计
佚名  本站原创  综合  编辑:dezai  图片来源:网络
postText>在asp.net 2.0中,可以结合dhtml来实现在用户上传完一个文件后,再点“继续上传”,而动态增加上传文件框首先是前台的页面
在asp.net 2.0中,可以结合dhtml来实现在用户上传完一个文件后,再点“继续上传”,而动态增加上传文件框
首先是前台的页面



   
   
  
   
   
  
  
   
   
       
  
   
      
  
 
所属分类:
    
   
选择照片:
    
        
      
      
      
    

       


      
(最多上传 <%=MAXPHOTOCOUNT%> 张照片)
 单击此按钮增加一个上传照片按钮。如果文件的名称或者内容为空,则不上传该照片。

   
 
     
   

这里使用了一个javascript,来动态生成多个上传文件框,注意这里用了一个DHTML的函数insertAdjacentHTML,用法如下

加html内容(insertAdjacentHTML和insertAdjacentText)
    dhtml提供了两个方法来进行添加,insertAdjacentHTML和insertAdjacentText
insertAdjacentHTML方法:在指定的地方插入html标签语句。
    原型:insertAdjacentHTML(swhere,stext)
    参数:
    swhere:指定插入html标签语句的地方,有四种值可以用:
              1.beforeBegin:插入到标签开始前
              2.afterBegin:插入到标签开始标记后
              3.beforeEnd:插入到标签结束标记前
              4.afterEnd:插入到标签结束标记后
              stext:要插入的内容
      例:var sHTML="
"
      var sScript='
    
 
     insertAdjacentText方法与insertAdjacentHTML方法类似,只不过只能插入纯文本,参数相同

接下来就可以用FOR循环去处理了
protected void btnCommit_Click(object sender,EventArgs e)
 {
  if(ddlCategory.SelectedIndex <= 0) return;
  ///获取上载文件的列表
  HttpFileCollection fileList = HttpContext.Current.Request.Files;
  if(fileList == null) return;
  Album album = new Album();
  try
  {   ///上载文件列表中的每一个文件
   for(int i = 0; i < fileList.Count; i++)
   {   ///获取当前上载的文件
    HttpPostedFile postedFile = fileList[i];
    if(postedFile == null) continue;
    ///获取上载文件的文件名称
    string fileName = Path.GetFileNameWithoutExtension(postedFile.FileName);
    string extension = Path.GetExtension(postedFile.FileName);
    if(string.IsNullOrEmpty(extension) == true) continue;
    ///判断文件是否合法
    bool isAllow = false;
    foreach(string ext in AjaxAlbumSystem.ALLOWPHOTOFILELIST)
    {
     if(ext == extension.ToLower())
     {
      isAllow = true;
      break;
     }
    }
    if(isAllow == false) continue;    
    ///获取基于时间的文件名称
    string timeFilename = AjaxAlbumSystem.CreateDateTimeString();
    ///获取保存在数据库中的URL
    string url = "Photoes/" + timeFilename + extension;
    ///获取全路径
    string fullPath = Server.MapPath(url);
    ///上载文件
    postedFile.SaveAs(fullPath);
    ///添加文件到数据库中
    album.AddPhoto(fileName,url,postedFile.ContentType,postedFile.ContentLength,
     Int32.Parse(ddlCategory.SelectedValue));    
   }
  }
  catch(Exception ex)
  {   ///显示上载文件的操作失败消息
   lbMessage.Text = "上载文件错误,错误原因为:" + ex.Message;
   return;
  }
本文作者:佚名 来源:本站原创
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读