form+iframes模拟文件上传
2020/5/12 8:26:18
本文主要是介绍form+iframes模拟文件上传,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 DOM结构
<form method="post" action="/CloudMarketing/limitPM/uploadFile" target="uploadFrame" id="upload" enctype="multipart/form-data"> <input name="file" accept="xls,xlsx,jpg,jpeg,pdf" value="" id="fileLocalFile" type="file"> <!-- 隐藏我们的上传文件控件 --> <button type="button" class="yi-btn bor-primary" id="uploadBtn">上传</button> </form> <!-- 隐藏的iframe --> <iframe id="uploadFrame" name="uploadFrame" width="0" height="0" border="0" style="opacity:0"></iframe>
2 JS部分
//上传文件 //监听frame的 onload方法 let oFrm = document.getElementById("uploadFrame"); oFrm.onload = oFrm.onreadystatechange = function () { if (this.readyState && this.readyState != "complete") return; //获取iframe里面的内容 let responseText = document.getElementById("uploadFrame").contentWindow.document.getElementsByTagName("BODY")[0].innerText; //上传完成后的处理 if (responseText != "") { let responseData = JSON.parse(responseText); // alert(JSON.parse(responseText)); $('.update-file .selected-option').show(); $('.update-file .selected-option ul').html('<li><span class="name" data-id="' + responseData.RetValue.filePath + '">' + responseData.RetValue.fileName + '</span><span class="close-wrap"><i class="icon icon-close"></i></span></li>'); } } //监听文件路径变化 $("#fileLocalFile").change(function () { let filePath = $("#fileLocalFile").val(); if (filePath != "") { let extionType = filePath.substr(filePath.lastIndexOf(".") + 1); if (extionType != "xls" && extionType != 'xlsx' && extionType != 'jpg' && extionType != 'jpeg' && extionType != 'pdf') { alert("请上传jpg、pdf、excle等格式,大小1.5M以内的文件"); $("input[name=fileLocalFile]").val(""); return; } else { if ($('.update-file .selected-option ul').html() == '') { let index = filePath.lastIndexOf("\\"), fileName = filePath.substring(index + 1, filePath.length); $('#upload')[0].submit(); $("input[name=fileLocalFile]").val(""); } else { //确认弹层 $('.yi-mask').show(); $('#confirmD').show(); } } } }); $('#confirmD .btnok').click(function () { $('#confirmD').hide(); $('.yi-mask').hide(); let filePath = $("#fileLocalFile").val(); let index = filePath.lastIndexOf("\\"), fileName = filePath.substring(index + 1, filePath.length); $('#upload')[0].submit(); $("input[name=fileLocalFile]").val(""); }); //弹层关闭 $('#confirmD .close,#confirmD .btnok').click(function () { $('.yi-mask').hide(); $(this).parents('.yi-modal').hide(); $("input[name=fileLocalFile]").val(""); })
3 CSS部分
#upload { position: relative; float: left; } #fileLocalFile { opacity: 0; filter: alpha(opacity=0); position: absolute; left: 0; top: 0; width: 70px; height: 30px; z-index: 1; cursor: pointer; }
总结:
a>
不要用其他事件来绑定file的点击事件,会造成ie8拒绝访问;
如:
$("#uploadBtn").click(function() { $("#fileLocalFile").trigger("click"); });
b>
接口要返回字符串类型的数据,ie8接收不到json类型
这篇关于form+iframes模拟文件上传的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26手写消息中间件:从零开始的指南
- 2024-11-26Java语音识别项目资料:新手入门教程
- 2024-11-26JAVA语音识别项目资料:新手入门教程
- 2024-11-26Java语音识别项目资料:入门与实践指南
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料入门教程
- 2024-11-26Java云原生资料:新手入门教程
- 2024-11-25Java创意资料:新手入门的创意学习指南
- 2024-11-25JAVA对接阿里云智能语音服务资料详解:新手入门指南
- 2024-11-25Java对接阿里云智能语音服务资料详解