用javascript+asp.net批量上传相片的经验总结。

本文介绍了一种实现批量上传照片的方法,并为每张照片动态添加对应的标题和描述。文章详细展示了使用JavaScript进行动态表单元素添加的过程,解决了不同浏览器间的兼容性问题。
需求:
  在一个相册时批量上传相片。相片具有相片标题、相片描述等信息。
---
  如果单独的批量上传相片,那没有啥可说的。NET的上传功能可说绰绰有余。只要记得
  <form enctype="multipart/form-data" .......就可以了。
---
 第一个: 需要考虑的是每张照片对应它自己的标题和描述。。。考虑了一下,我最后采用,在动态添加上传表单时
  给予相应的文本框加name="title1" name="title2"这样的形式来一一对应。
 第二个: 需要考虑的是如何通过JS动态添加。。
  根据以前在网上看过的多文件上传的实现,真实我用 ***.innerHTML=****的形式来为某个容器动态添加项实现。
  不过,发现如果某些上传表单已经有选过文件,此时再用innerHTML+=****的形式的话, 原来已选的内容会被重置。
  最后决定用 ***.insertAdjacentHTML(position,nhtml)的形式来实现。需要注意的是在FF下并不支持这个函数。具体的兼容方案在代码中。
 第三个: FF不支持removeNode(true|false)的解决办法:使用***.parentNode.removeChild(***)的形式来兼容。
--------
     总结:单纯的文件上传功能应该很简单,动态添加要注意的就是IE与FF等其它浏览器的兼容。
----
  运行效果图:
 111.jpg222.jpg

---
 附上主要的JS代码:
 
 1None.gif<script type="text/javascript" language="javascript">
 2None.gif<!--
 3None.gif//多相片上传动态增加
 4None.gif       var num=0;    
 5None.gif       if(!document.all) //非IE类下注册
 6ExpandedBlockStart.gifContractedBlock.gif       dot.gif{
 7InBlock.gif           HTMLElement.prototype.insertAdjacentHTML=function(where, html) 
 8ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif
 9InBlock.gif            var e=this.ownerDocument.createRange(); 
10InBlock.gif            e.setStartBefore(this); 
11InBlock.gif            e=e.createContextualFragment(html); 
12InBlock.gif            switch (where) 
13ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif
14InBlock.gif                case 'beforeBegin'this.parentNode.insertBefore(e, this);break
15InBlock.gif                case 'afterBegin'this.insertBefore(e, this.firstChild); break
16InBlock.gif                case 'beforeEnd'this.appendChild(e); break
17InBlock.gif                case 'afterEnd'
18InBlock.gif                if(!this.nextSibling) this.parentNode.appendChild(e); 
19InBlock.gif                else this.parentNode.insertBefore(e, this.nextSibling); break
20ExpandedSubBlockEnd.gif                }
 
21ExpandedSubBlockEnd.gif            }
;
22ExpandedBlockEnd.gif       }

23None.gif       function AddNew()
24ExpandedBlockStart.gifContractedBlock.gif       dot.gif{
25InBlock.gif         num++;
26InBlock.gif         if(num>=2)
27ExpandedSubBlockStart.gifContractedSubBlock.gif         dot.gif{
28InBlock.gif            var parObj=document.getElementById("upfiles"+(num-1));
29InBlock.gif            var reBtn=document.getElementById("remove"+(num-1));
30InBlock.gif            if(document.all)
31ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
32InBlock.gif               reBtn.removeNode(true);
33ExpandedSubBlockEnd.gif            }

34InBlock.gif            else
35ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
36InBlock.gif               reBtn.parentNode.removeChild(reBtn)
37ExpandedSubBlockEnd.gif            }

38ExpandedSubBlockEnd.gif         }

39InBlock.gif         var nhtml="<div id=\"upfiles"+num+"\" ><br /><fieldset><legend id=\"add"+num+"\" name=\"add"+num+"\" title=\"上传框\">上传相片<input type=\"button\" id=\"remove"+num+"\" name=\"remove"+num+"\" onclick=\"Remove("+num+")\" value=\"取消该上传\" /></legend>";
40InBlock.gif         nhtml+="照片标题:<input type=\"text\"  id=\"PhotoTitle"+num+"\" name=\"PhotoTitle"+num+"\"/><span class=\"fon1\">*</span><br />";
41InBlock.gif         nhtml+="照片描述:<textarea id=\"PhotoText"+num+"\" name=\"PhotoText"+num+"\" rows=\"6\" cols=\"50\" ></textarea><br />";
42InBlock.gif         nhtml+="图片文件:<input type=\"file\" id=\"PhotoFile\" name=\"PhotoFile\" /><span class=\"fon1\">*</span></fieldset><br /></div>";
43InBlock.gif         document.getElementById("FileTable").insertAdjacentHTML("beforeEnd",nhtml);
44ExpandedBlockEnd.gif       }

45None.gif       function Remove(currentnum)
46ExpandedBlockStart.gifContractedBlock.gif       dot.gif{
47InBlock.gif          var parObj=document.getElementById("FileTable");
48InBlock.gif          var current=document.getElementById("upfiles"+parseInt(currentnum));
49InBlock.gif          parObj.removeChild(current);
50InBlock.gif          num--;
51InBlock.gif          if(num>=1)
52ExpandedSubBlockStart.gifContractedSubBlock.gif          dot.gif{
53InBlock.gif            var leg=document.getElementById("add"+(num));
54InBlock.gif            var btnHtml="<input type=\"button\" id=\"remove"+num+"\" name=\"remove"+num+"\" onclick=\"Remove("+(num)+")\" value=\"取消该上传\" />"
55InBlock.gif            leg.insertAdjacentHTML("beforeEnd",btnHtml);
56ExpandedSubBlockEnd.gif          }

57ExpandedBlockEnd.gif       }

58None.gif//end
59None.gif//-->
60None.gif</script>

其中肯定有不合理或错误的地方。请各位达人指正。

转载于:https://www.cnblogs.com/McJeremy/archive/2008/05/22/1205007.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值