当前位置: 首页 > 编程笔记 >

通过隐藏iframe实现无刷新上传文件操作

牛昱
2023-03-14
本文向大家介绍通过隐藏iframe实现无刷新上传文件操作,包括了通过隐藏iframe实现无刷新上传文件操作的使用技巧和注意事项,需要的朋友参考一下

其实在ajax出现之前,web应用也可以是无刷新的,那时大多通过IFrame来做到这一点。当然Ajax出现之后,人们一窝蜂地投奔Ajax 的阵营了,iFrame 就乏人问津了。但是用iFrame来实现无刷新上传文件确实一个很好的选择。

解决办法是通过一个隐藏的iframe来处理上传操作我采用的是ReactJS,amazeui,nodejs

1.html target指向iframe的name,就是把上传后的操作交给iframe来处理.

<form id="supplyformFile" name="formFile" method="post" target="frameFile"
encType="multipart/form-data">
<div className="am-form-file">
<button type="button" className="am-btn am-btn-default am-btn-sm">
<i className="am-icon-cloud-upload"></i> 选择要上传的文件
</button>
<input type="file" id="fileUp" onChange={this.UploadSupplyer} name="fileUp" />
</div> 
<div id="supplyfile_div"></div>
</form>
<iframe id="frameFile" name="frameFile" style={{display: 'none'}}></iframe>
<input type="hidden" id="supplyfile" />

2.JS处理当文件选择后提交form

UploadSupplyer:function(){
var path = document.all.fileUp.value;
if(!path){return false;}
$('.loadinfo').html('<p>文件上传中...</p>').removeClass("none");
$('#supplyformFile').submit();
},

3.nodejs服务器处理,因为处理页面是nodejs服务器域,iframe中存在跨域的问题,所以需要用到H5的postMessage方法来传递参数给iframe外面的表单页面

var fname = req.files.fileUp.path.replace("publicfiles", "").replace("public/files/", "");
res.writeHead(200, {'Content-type' : 'text/html'});
res.write('<script>');
res.write('window.parent.postMessage("'+fname+'","*");');
res.end('</script>');

4.JS处理上传结果

window.addEventListener('message',function(e){
var fname=e.data;
$('#supplyfile').val(fname);
$(".loadinfo").addClass("none");
$(".successinfo").html("<p>文件上传成功</p>").removeClass("none");
setTimeout(function() { $(".successinfo").addClass("none");}, 2000);
$("#supplyfile_div").html('<span class="am-icon-file-o"></span> <a target="_blank" href="'+hosts+'/files/'+fname+'">供应商确认单</a>');
},false);

以上所述是小编给大家介绍的通过隐藏iframe实现无刷新上传文件操作,希望对大家有所帮助!

 类似资料:
  • 问题内容: 我需要快速说明如何使用隐藏的iframe上传AJAX样式的文件。这是与表单有关的HTML代码部分: 以下是相关的PHP: 因此,从本质上讲,PHP获取了文件并检查它是否是文本文件。然后,我想在JavaScript中访问返回的json。那是我感到困惑的地方… 理想情况下,上传完成并加载iframe后,应调用 但是,这始终是空白。本质上,returnVals放置在iframe主体中,但是在

  • 本文向大家介绍PHP+iFrame实现页面无需刷新的异步文件上传,包括了PHP+iFrame实现页面无需刷新的异步文件上传的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP+iFrame实现页面无需刷新的异步文件上传,是非常实用的常见技巧。分享给大家供大家参考。具体分析如下: 说到iframe,现在用它的人是越来越少了,并且很多人都相信它应该被AJAX所取代,的确如此,因为AJAX太出

  • 本文向大家介绍php+ajax实现无刷新文件上传功能(ajaxuploadfile),包括了php+ajax实现无刷新文件上传功能(ajaxuploadfile)的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了php+ajax实现无刷新文件上传的具体代码,供大家参考,具体内容如下 文件上传的表单格式 AjaxFileUpload实现文件异步上传效果更好,使用简单: 上传还可以传递参数

  • 本文向大家介绍Thinkphp+smarty+uploadify实现无刷新上传,包括了Thinkphp+smarty+uploadify实现无刷新上传的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Thinkphp+smarty+uploadify实现无刷新上传的方法。分享给大家供大家参考。具体如下: 模板文件代码: 控制器代码: 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍PHP+iframe图片上传实现即时刷新效果,包括了PHP+iframe图片上传实现即时刷新效果的使用技巧和注意事项,需要的朋友参考一下 这几天在做一个图片上传功能,原本想用ajax上传图片实现即时刷新,可是一直实现不了,唉。 后来用了iframe框架来实现了,不过这个用这框架却存在一个问题,当我吧图片上传以后我要把上传的路径返回到这框架中,那么怎么取出来,开始我把值直接输出到ifr

  • 本文向大家介绍通过Ajax使用FormData对象无刷新上传文件方法,包括了通过Ajax使用FormData对象无刷新上传文件方法的使用技巧和注意事项,需要的朋友参考一下 写在前面:本文说的这个方案有浏览器兼容性问题;所有主流浏览器的较新版本已经支持这个对象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+,对兼容性比较敏感的网站慎用。 在工作中