加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

AjaxUpLoad.js使用实现文件上传

发布时间:2020-12-15 21:48:52 所属栏目:百科 来源:网络整理
导读:AjaxUpLoad.js的使用实现无刷新文件上传,如图。 图1 文件上传前 图2 文件上传后 1、创建页面并编写HTML [html] view plain copy 上传文档: div class = "uploadFile" span id = "doc" input type = "text" disabled = "disabled" / / span input type = "hi

AjaxUpLoad.js的使用实现无刷新文件上传,如图。


图1 文件上传前

图2 文件上传后

1、创建页面并编写HTML

[html] view plain copy
  1. 上传文档:
  2. <divclass="uploadFile">
  3. spanid="doc">inputtype="text"disabled="disabled"/></span>
  4. inputtype="hidden"id="hidFileName"/>
  5. inputtype="button"id="btnUploadFile"value="上传"/>
  6. inputtype="button"id="btnDeleteFile"value="删除"div
  7. 上传图片:
  8. divclass="uploadImg"imgid="imgShow"src="/images/nophoto.gif"inputtype="hidden"id="hidImgName"inputtype="button"id="btnUploadImg"value="上传"inputtype="button"id="btnDeleteImg"value="删除">
2、引用AjaxUpload.js文件
copy
    scriptsrc="/js/common/AjaxUpload.js"type="text/javascript"script3、编写JS脚本
    [java] copy
      window.onload=function(){
    1. init();//初始化
    2. }
    3. //初始化
    4. functioninit(){
    5. //初始化文档上传
    6. varbtnFile=document.getElementById("btnUploadFile");
    7. vardoc=document.getElementById("doc");
    8. varhidFileName=document.getElementById("hidFileName");
    9. document.getElementById("btnDeleteFile").onclick=function(){DelFile(doc,hidFileName);};
    10. g_AjxUploadFile(btnFile,doc,hidFileName);
    11. //初始化图片上传
    12. varbtnImg=document.getElementById("btnUploadImg");
    13. varimg=document.getElementById("imgShow");
    14. varhidImgName=document.getElementById("hidImgName");
    15. document.getElementById("btnDeleteImg").onclick=function(){DelImg(img,hidImgName);};
    16. g_AjxUploadImg(btnImg,img,hidImgName);
    17. }
    18. varg_AjxTempDir="/file/temp/";
    19. //文档上传
    20. functiong_AjxUploadFile(btn,hidPut,action){
    21. varbutton=btn,interval;
    22. newAjaxUpload(button,{
    23. action:((action==null||action==undefined)?'/Common/UploadHandler.ashx?fileType=file':action),
    24. data:{},
    25. name:'myfile',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> onSubmit:function(file,ext){
    26. if(!(ext&&/^(rar|zip|pdf|pdfx|txt|csv|xls|xlsx|doc|docx|RAR|ZIP|PDF|PDFX|TXT|CSV|XLS|XLSX|DOC|DOCX)$/.test(ext))){
    27. alert("您上传的文档格式不对,请重新选择!");
    28. returnfalse;
    29. },
    30. onComplete:function(file,response){
    31. flagValue=response;
    32. if(flagValue=="1"){
    33. alert("您上传的文档格式不对,请重新选择!");
    34. elseif(flagValue=="2"){
    35. alert("您上传的文档大于2M,请重新选择!");
    36. if(flagValue=="3"){
    37. alert("文档上传失败!");
    38. else{
    39. hidPut.value=response;
    40. doc.innerHTML="<ahref='"+g_AjxTempDir+response+"'target='_blank'>"+response+"</a>";
    41. });
    42. //图片上传
    43. functiong_AjxUploadImg(btn,hidPut){
    44. varbutton=btn,interval;
    45. action:'/Common/UploadHandler.ashx?fileType=img',
    46. data:{},108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> name:'myfile',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> onSubmit:function(file,ext){
    47. if(!(ext&&/^(jpg|JPG|png|PNG|gif|GIF)$/.test(ext))){
    48. alert("您上传的图片格式不对,请重新选择!");
    49. false;
    50. },248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> onComplete:function(file,response){
    51. flagValue=response;
    52. if(flagValue=="1"){
    53. alert("您上传的图片格式不对,请重新选择!");
    54. if(flagValue=="2"){
    55. alert("您上传的图片大于200K,请重新选择!");
    56. if(flagValue=="3"){
    57. alert("图片上传失败!");
    58. else{
    59. hidPut.value=response;
    60. img.src=g_AjxTempDir+response;
    61. });
    62. //删除文档
    63. functionDelFile(doc,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> hidPut.value="";
    64. doc.innerHTML="<inputtype="text"disabled="disabled"/>";
    65. //删除图片
    66. functionDelImg(img,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> img.src="/images/nophoto.gif";
    67. }

    4、创建/Common/UploadHandler.ashx处理程序

    [csharp] copy
      <%@WebHandlerLanguage="C#"Class="UploadHandler"%>
    1. usingSystem;
    2. usingSystem.Web;
    3. usingSystem.Text.RegularExpressions;
    4. usingSystem.IO;
    5. publicclassUploadHandler:IHttpHandler{
    6. privatestring_filedir="";//文件目录
    7. ///<summary>
    8. ///处理上传文件(1:文件格式不正确、2:文件大小不正确、3:上传失败、文件名称:上传成功)
    9. ///</summary>
    10. ///<paramname="context"></param>
    11. voidProcessRequest(HttpContextcontext){
    12. _filedir=context.Server.MapPath(@"/file/temp/");
    13. try
    14. {
    15. stringresult="3";
    16. stringfileType=context.Request.QueryString["fileType"];//获取上传文件类型
    17. if(fileType=="file")
    18. result=UploadFile(context);if(fileType=="img")
    19. result=UploadImg(context);//图片上传
    20. context.Response.Write(result);
    21. catch
    22. context.Response.Write("3");//3文件上传失败
    23. ///文档上传
    24. ///<returns></returns>
    25. stringUploadFile(HttpContextcontext)
    26. {
    27. intcout=context.Request.Files.Count;
    28. if(cout>0)
    29. HttpPostedFilehpf=context.Request.Files[0];
    30. if(hpf!=null)
    31. stringfileExt=Path.GetExtension(hpf.FileName).ToLower();
    32. //只能上传文件,过滤不可上传的文件类型
    33. stringfileFilt=".rar|.zip|.pdf|.pdfx|.txt|.csv|.xls|.xlsx|.doc|.docx......";
    34. if(fileFilt.IndexOf(fileExt)<=-1)
    35. return"1";
    36. //判断文件大小
    37. intlength=hpf.ContentLength;
    38. if(length>2097152)
    39. return"2";
    40. Randomrd=newRandom();
    41. DateTimenowTime=DateTime.Now;
    42. stringnewFileName=nowTime.Year.ToString()+nowTime.Month.ToString()+nowTime.Day.ToString()+nowTime.Hour.ToString()+nowTime.Minute.ToString()+nowTime.Second.ToString()+rd.Next(1000,1000000)+Path.GetExtension(hpf.FileName);
    43. if(!Directory.Exists(_filedir))
    44. Directory.CreateDirectory(_filedir);
    45. stringfileName=_filedir+newFileName;
    46. hpf.SaveAs(fileName);
    47. returnnewFileName;
    48. return"3";
    49. ///图片上传
    50. stringUploadImg(HttpContextcontext)
    51. stringfileFilt=".gif|.jpg|.php|.jsp|.jpeg|.png|......";
    52. if(length>204800)
    53. #regionIHttpHandler成员
    54. boolIsReusable
    55. get{thrownewNotImplementedException();}
    56. #endregion
    57. }
    附件1:页面CSS样式
    [css] copy
      /*上传文件*/
    1. .uploadFile{margin-bottom:10px;}
    2. /*上传图片*/
    3. .uploadImg{}
    4. .uploadImgimg{width:102px;height:64px;border:1pxsolid#CCCCCC;display:block;}
    附件2:AjaxUpload.js文件
    [javascript] copy
      /**
    1. *AJAXUpload(http://valums.com/ajax-upload/)
    2. *Copyright(c)AndrisValums
    3. *LicensedundertheMITlicense(http://valums.com/mit-license/)
    4. *ThankstoGaryHaran,DavidMark,CoreyBurnsandothersforcontributions
    5. */
    6. (function(){
    7. /*globalwindow*/
    8. /*jslintbrowser:true,devel:true,undef:true,nomen:true,bitwise:true,regexp:true,newcap:true,immed:true*/
    9. *WrapperforFireBug'sconsole.log
    10. */
    11. functionlog(){
    12. if(typeof(console)!='undefined'&&typeof(console.log)=='function'){
    13. Array.prototype.unshift.call(arguments,'[AjaxUpload]');
    14. console.log(Array.prototype.join.call(arguments,''));
    15. /**
    16. *Attacheseventtoadomelement.
    17. *@param{Element}el
    18. *@paramtypeeventname
    19. *@paramfncallbackThisreferstothepassedelement
    20. functionaddEvent(el,type,fn){
    21. if(el.addEventListener){
    22. el.addEventListener(type,fn,false);
    23. }if(el.attachEvent){
    24. el.attachEvent('on'+type, fn.call(el);
    25. newError('notsupportedorDOMnotloaded');
    26. *Attachesresizeeventtoawindow,limiting
    27. *numberofeventfired.Firesonlywhenencounteres
    28. *delayof100afterseriesofevents.
    29. *
    30. *Somebrowsersfireeventmultipletimeswhenresizing
    31. *http://www.quirksmode.org/dom/events/resize.html
    32. *
    33. *@paramfncallbackThisreferstothepassedelement
    34. functionaddResizeEvent(fn){
    35. vartimeout;
    36. addEvent(window,'resize',153); background-color:inherit; font-weight:bold">if(timeout){
    37. clearTimeout(timeout);
    38. timeout=setTimeout(fn,100);
    39. //Needsmoretesting,willberewritenfornextversion
    40. //getOffsetfunctioncopiedfromjQuerylib(http://jquery.com/)
    41. if(document.documentElement.getBoundingClientRect){
    42. //GetOffsetusinggetBoundingClientRect
    43. //http://ejohn.org/blog/getboundingclientrect-is-awesome/
    44. vargetOffset=function(el){
    45. varbox=el.getBoundingClientRect();
    46. vardoc=el.ownerDocument;
    47. varbody=doc.body;
    48. vardocElem=doc.documentElement;//forie
    49. varclientTop=docElem.clientTop||body.clientTop||0;
    50. varclientLeft=docElem.clientLeft||body.clientLeft||0;
    51. //InInternetExplorer7getBoundingClientRectpropertyistreatedasphysical,
    52. //whileothersarelogical.Makealllogical,likeinIE8.
    53. varzoom=1;
    54. if(body.getBoundingClientRect){
    55. varbound=body.getBoundingClientRect();
    56. zoom=(bound.right-bound.left)/body.clientWidth;
    57. if(zoom>1){
    58. clientTop=0;
    59. clientLeft=0;
    60. vartop=box.top/zoom+(window.pageYOffset||docElem&&docElem.scrollTop/zoom||body.scrollTop/zoom)-clientTop,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> left=box.left/zoom+(window.pageXOffset||docElem&&docElem.scrollLeft/zoom||body.scrollLeft/zoom)-clientLeft;
    61. return{
    62. top:top,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> left:left
    63. };
    64. };
    65. }//Getoffsetaddingalloffsets
    66. function(el){
    67. vartop=0,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> left=0;
    68. do{
    69. top+=el.offsetTop||0;
    70. left+=el.offsetLeft||0;
    71. el=el.offsetParent;
    72. while(el);
    73. left:left,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> top:top
    74. *Returnsleft,top,rightandbottompropertiesdescribingtheborder-box,0); background-color:inherit">*inpixels,withthetop-leftrelativetothebody
    75. *@return{Object}Containsleft,right,bottom
    76. functiongetBox(el){
    77. varleft,bottom;
    78. varoffset=getOffset(el);
    79. left=offset.left;
    80. top=offset.top;
    81. right=left+el.offsetWidth;
    82. bottom=top+el.offsetHeight;
    83. return{
    84. left:left,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> right:right,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> top:top,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> bottom:bottom
    85. *Helperthattakesobjectliteral
    86. *andaddallpropertiestoelement.style
    87. *@param{Object}styles
    88. functionaddStyles(el,styles){
    89. for(varnameinstyles){
    90. if(styles.hasOwnProperty(name)){
    91. el.style[name]=styles[name];
    92. *Functionplacesanabsolutelypositioned
    93. *elementontopofthespecifiedelement
    94. *copyingpositionanddimentions.
    95. *@param{Element}from
    96. *@param{Element}to
    97. functioncopyLayout(from,to){
    98. varbox=getBox(from);
    99. addStyles(to,{
    100. position:'absolute',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> left:box.left+'px',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> top:box.top+'px',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> width:from.offsetWidth+'px',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> height:from.offsetHeight+'px'
    101. *Createsandreturnselementfromhtmlchunk
    102. *UsesinnerHTMLtocreateanelement
    103. vartoElement=(function(){
    104. vardiv=document.createElement('div');
    105. function(html){
    106. div.innerHTML=html;
    107. varel=div.firstChild;
    108. returndiv.removeChild(el);
    109. })();
    110. *Functiongeneratesuniqueid
    111. *@returnuniqueid
    112. vargetUID=(varid=0;
    113. return'ValumsAjaxUpload'+id++;
    114. })();
    115. *Getfilenamefrompath
    116. *@param{String}filepathtofile
    117. *@returnfilename
    118. functionfileFromPath(file){
    119. returnfile.replace(/.*(/|)/,"");
    120. *Getfileextensionlowercase
    121. *@param{String}filename
    122. *@returnfileextenstion
    123. functiongetExt(file){
    124. return(-1!==file.indexOf('.'))?file.replace(/.*[.]/,''):'';
    125. functionhasClass(el,name){
    126. varre=newRegExp('b'+name+'b');
    127. returnre.test(el.className);
    128. functionaddClass(el,name){
    129. if(!hasClass(el,name)){
    130. el.className+=''+name;
    131. functionremoveClass(el,153); background-color:inherit; font-weight:bold">newRegExp('b'+name+'b');
    132. el.className=el.className.replace(re,'');
    133. functionremoveNode(el){
    134. el.parentNode.removeChild(el);
    135. *Easystylinganduploading
    136. *@constructor
    137. *@parambuttonAnelementyouwantconvertto
    138. *uploadbutton.Testeddimentionsupto500x500px
    139. *@param{Object}optionsSeedefaultsbelow.
    140. window.AjaxUpload=function(button,options){
    141. this._settings={
    142. //Locationoftheserver-sideuploadscript
    143. action:'upload.php',0); background-color:inherit">//Fileuploadname
    144. name:'userfile',0); background-color:inherit">//Additionaldatatosend
    145. //Submitfileassoonasit'sselected
    146. autoSubmit:true,0); background-color:inherit">//Thetypeofdatathatyou'reexpectingbackfromtheserver.
    147. //htmlandxmlaredetectedautomatically.
    148. //Onlyusefulwhenyouareusingjsondataasaresponse.
    149. //Setto"json"inthatcase.
    150. responseType:false,0); background-color:inherit">//Classappliedtobuttonwhenmouseishovered
    151. hoverClass:'hover',0); background-color:inherit">//ClassappliedtobuttonwhenAUisdisabled
    152. disabledClass:'disabled',0); background-color:inherit">//Whenuserselectsafile,usefulwithautoSubmitdisabled
    153. //Youcanreturnfalsetocancelupload
    154. onChange:function(file,extension){},0); background-color:inherit">//Callbacktofirebeforefileisuploaded
    155. //Youcanreturnfalsetocancelupload
    156. onSubmit://Firedwhenfileuploadiscompleted
    157. //WARNING!DONOTUSE"FALSE"STRINGASARESPONSE!
    158. onComplete://Mergetheusersoptionswithourdefaults
    159. variinoptions){
    160. if(options.hasOwnProperty(i)){
    161. this._settings[i]=options[i];
    162. //buttonisn'tnecessaryadomelement
    163. if(button.jquery){
    164. //jQueryobjectwaspassed
    165. button=button[0];
    166. typeofbutton=="string"){
    167. if(/^#.*/.test(button)){
    168. //IfjQueryuserpasses#elementIddon'tbreakit
    169. button=button.slice(1);
    170. button=document.getElementById(button);
    171. if(!button||button.nodeType!==1){
    172. newError("Pleasemakesurethatyou'repassingavalidelement");
    173. if(button.nodeName.toUpperCase()=='A'){
    174. //disablelink
    175. addEvent(button,'click',153); background-color:inherit; font-weight:bold">function(e){
    176. if(e&&e.preventDefault){
    177. e.preventDefault();
    178. if(window.event){
    179. window.event.returnValue=//DOMelement
    180. this._button=button;
    181. this._input=null;
    182. //Ifdisabledclickingonbuttonwon'tdoanything
    183. this._disabled=//ifthebuttonwasdisabledbeforerefreshifwillremain
    184. //disabledinFireFox,let'sfixit
    185. this.enable();
    186. this._rerouteClicks();
    187. //assigningmethodstoourclass
    188. AjaxUpload.prototype={
    189. setData:function(data){
    190. this._settings.data=data;
    191. disable: addClass(this._button,153); background-color:inherit; font-weight:bold">this._settings.disabledClass);
    192. true;
    193. varnodeName=this._button.nodeName.toUpperCase();
    194. if(nodeName=='INPUT'||nodeName=='BUTTON'){
    195. this._button.setAttribute('disabled','disabled');
    196. //hideinput
    197. this._input){
    198. //WeusevisibilityinsteadofdisplaytofixproblemwithSafari4
    199. //Theproblemisthatthevalueofinputdoesn'tchangeifit
    200. //hasdisplaynonewhenuserselectsafile
    201. this._input.parentNode.style.visibility='hidden';
    202. enable: removeClass(this._settings.disabledClass);
    203. this._button.removeAttribute('disabled');
    204. *Createsinvisiblefileinput
    205. *thatwillhoverabovethebutton
    206. *<div><inputtype='file'/></div>
    207. _createInput:varself=this;
    208. varinput=document.createElement("input");
    209. input.setAttribute('type','file');
    210. input.setAttribute('name',153); background-color:inherit; font-weight:bold">this._settings.name);
    211. addStyles(input,{
    212. 'position':'absolute',0); background-color:inherit">//inOperaonly'browse'button
    213. //isclickableanditislocatedat
    214. //therightsideoftheinput
    215. 'right':0,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'margin':0,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'padding':0,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'fontSize':'480px',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'cursor':'pointer'
    216. vardiv=document.createElement("div");
    217. addStyles(div,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'display':'block',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'overflow':'hidden',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'margin':0,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'padding':0,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'opacity':0,0); background-color:inherit">//Makesurebrowsebuttonisintherightside
    218. //inInternetExplorer
    219. 'direction':'ltr',0); background-color:inherit">//MaxzIndexsupportedbyOpera9.0-9.2
    220. 'zIndex':2147483583
    221. //Makesurethatelementopacityexists.
    222. //OtherwiseuseIEfilter
    223. if(div.style.opacity!=="0"){
    224. typeof(div.filters)=='undefined'){
    225. newError('Opacitynotsupportedbythebrowser');
    226. div.style.filter="alpha(opacity=0)";
    227. addEvent(input,'change',153); background-color:inherit; font-weight:bold">if(!input||input.value===''){
    228. return;
    229. //Getfilenamefrominput,required
    230. //assomebrowsershavepathinsteadofit
    231. varfile=fileFromPath(input.value);
    232. false===self._settings.onChange.call(self,file,getExt(file))){
    233. self._clearInput();
    234. return;
    235. //Submitformwhenvalueischanged
    236. if(self._settings.autoSubmit){
    237. self.submit();
    238. addEvent(input,'mouSEOver',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> addClass(self._button,self._settings.hoverClass);
    239. 'mouSEOut',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> removeClass(self._button,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> input.parentNode.style.visibility='hidden';
    240. div.appendChild(input);
    241. document.body.appendChild(div);
    242. this._input=input;
    243. _clearInput:if(!//this._input.value='';Doesn'tworkinIE6
    244. removeNode(this._input.parentNode);
    245. this._createInput();
    246. removeClass(this._settings.hoverClass);
    247. *Functionmakessurethatwhenuserclicksuploadbutton,0); background-color:inherit">*thethis._inputisclickedinstead
    248. _rerouteClicks:this;
    249. //IEwilllaterdisplay'accessdenied'error
    250. //ifyouuseusingself._input.click()
    251. //otherbrowsersjustignoreclick()
    252. addEvent(self._button,153); background-color:inherit; font-weight:bold">if(self._disabled){
    253. if(!self._input){
    254. self._createInput();
    255. vardiv=self._input.parentNode;
    256. copyLayout(self._button,div);
    257. div.style.visibility='visible';
    258. //commentedbecausewenowhideinputonmouseleave
    259. *Whenthewindowisresizedtheelements
    260. *canbemisalignedifbuttonpositiondepends
    261. *onwindowsize
    262. //addResizeEvent(function(){
    263. //if(self._input){
    264. //copyLayout(self._button,self._input.parentNode);
    265. //}
    266. //});
    267. *Createsiframewithuniquename
    268. *@return{Element}iframe
    269. _createIframe://Wecan'tusegetTime,becauseitsometimesreturn
    270. //samevalueinsafari:(
    271. varid=getUID();
    272. //Wecan'tusefollowingcodeasthenameattribute
    273. //won'tbeproperlyregisteredinIE6,andnewwindow
    274. //onformsubmitwillopen
    275. //variframe=document.createElement('iframe');
    276. //iframe.setAttribute('name',id);
    277. variframe=toElement('<iframesrc="javascript:false;"name="'+id+'"/>');
    278. //src="javascript:false;wasadded
    279. //becauseitpossiblyremovesie6prompt
    280. //"Thispagecontainsbothsecureandnonsecureitems"
    281. //Anyway,itdoesn'tdoanyharm.
    282. iframe.setAttribute('id',id);
    283. iframe.style.display='none';
    284. document.body.appendChild(iframe);
    285. returniframe;
    286. *Createsform,thatwillbesubmittedtoiframe
    287. *@param{Element}iframeWheretosubmit
    288. *@return{Element}form
    289. _createForm:function(iframe){
    290. varsettings=this._settings;
    291. //Wecan'tusethefollowingcodeinIE6
    292. //varform=document.createElement('form');
    293. //form.setAttribute('method','post');
    294. //form.setAttribute('enctype','multipart/form-data');
    295. //Becauseinthiscasefilewon'tbeattachedtorequest
    296. varform=toElement('<formmethod="post"enctype="multipart/form-data"></form>');
    297. form.setAttribute('action',settings.action);
    298. form.setAttribute('target',iframe.name);
    299. form.style.display='none';
    300. document.body.appendChild(form);
    301. //Createhiddeninputelementforeachdatakey
    302. varpropinsettings.data){
    303. if(settings.data.hasOwnProperty(prop)){
    304. varel=document.createElement("input");
    305. el.setAttribute('type','hidden');
    306. el.setAttribute('name',prop);
    307. el.setAttribute('value',settings.data[prop]);
    308. form.appendChild(el);
    309. returnform;
    310. *GetsresponsefromiframeandfiresonCompleteeventwhenready
    311. *@paramiframe
    312. *@paramfileFilenametouseinonCompletecallback
    313. _getResponse:function(iframe,file){
    314. //gettingresponse
    315. vartoDeleteFlag= self=this,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> settings=this._settings;
    316. addEvent(iframe,'load',153); background-color:inherit; font-weight:bold">if(//ForSafari
    317. iframe.src=="javascript:'%3Chtml%3E%3C/html%3E';"||
    318. //ForFF,IE
    319. iframe.src=="javascript:'<html></html>';"){
    320. //Firsttimearound,donotdelete.
    321. //Wereloadtoblankpage,sothatreloadingmainpage
    322. //doesnotre-submitthepost.
    323. if(toDeleteFlag){
    324. //FixbusystateinFF3
    325. setTimeout( removeNode(iframe);
    326. 0);
    327. vardoc=iframe.contentDocument?iframe.contentDocument:window.frames[iframe.id].document;
    328. //fixingOpera9.26,10.00
    329. if(doc.readyState&&doc.readyState!='complete'){
    330. //Operafiresloadeventmultipletimes
    331. //EvenwhentheDOMisnotreadyyet
    332. //thisfixshouldnotaffectotherbrowsers
    333. //fixingOpera9.64
    334. if(doc.body&&doc.body.innerHTML=="false"){
    335. //InOpera9.64eventwasfiredsecondtime
    336. //whenbody.innerHTMLchangedfromfalse
    337. //toserverresponseapprox.after1sec
    338. varresponse;
    339. if(doc.XMLDocument){
    340. //responseisaxmldocumentInternetExplorerproperty
    341. response=doc.XMLDocument;
    342. if(doc.body){
    343. //responseishtmldocumentorplaintext
    344. response=doc.body.innerHTML;
    345. if(settings.responseType&&settings.responseType.toLowerCase()=='json'){
    346. //Ifthedocumentwassentas'application/javascript'or
    347. //'text/javascript',thenthebrowserwrapsthetextina<pre>
    348. //tagandperformshtmlencodingonthecontents.Inthiscase,
    349. //weneedtopulltheoriginaltextcontentfromthetextnode's
    350. //nodeValuepropertytoretrievetheunmangledcontent.
    351. //NotethatIE6onlyunderstandstext/html
    352. if(doc.body.firstChild&&doc.body.firstChild.nodeName.toUpperCase()=='PRE'){
    353. response=doc.body.firstChild.firstChild.nodeValue;
    354. if(response){
    355. response=eval("("+response+")");
    356. response={};
    357. //responseisaxmldocument
    358. response=doc;
    359. settings.onComplete.call(self,response);
    360. //Reloadblankpage,sothatreloadingmainpage
    361. //doesnotre-submitthepost.Also,rememberto
    362. //deletetheframe
    363. toDeleteFlag=//FixIEmixedcontentissue
    364. iframe.src="javascript:'<html></html>';";
    365. *Uploadfilecontainedinthis._input
    366. submit:this._input||this._input.value===''){
    367. varfile=fileFromPath(this._input.value);
    368. //userreturnedfalsetocancelupload
    369. false===settings.onSubmit.call(this._clearInput();
    370. //sendingrequest
    371. variframe=this._createIframe();
    372. varform=this._createForm(iframe);
    373. //assumingfollowingstructure
    374. //div->inputtype='file'
    375. removeClass(self._button,self._settings.hoverClass);
    376. form.appendChild(this._input);
    377. form.submit();
    378. //requestset,cleanup
    379. removeNode(form);
    380. form=this._input);
    381. //GetresponsefromiframeandfireonCompleteeventwhenready
    382. this._getResponse(iframe,file);
    383. //getreadyfornextrequest
    384. this._createInput();
    385. })();

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读