跨域上传文件
来源:互联网 发布:长整型数java 编辑:程序博客网 时间:2024/04/28 03:06
跨域上传文件
不跨域时:
我们需要上传文件但是上传文件后希望页面不要跳转,不涉及到跨域的上传文件有两种:
1),html代码
<form id="submit_file" class="upload_form" action="你要提交的地址" method="post" enctype="multipart/form-data" target="upload_iframe"> <input type="file" name="pic" value="" id="fileupload" style="display:block"> </form> <iframe src="javascript:void((function(){document.open();document.domain='lenovo.com.cn';document.close()})())" frameborder="0" id="upload_iframe" name="upload_iframe"></iframe>
js代码:运用jqueryform的ajaxSubmit方法直接提交,详情可以查看jqueryformapi;
2):利用form表单提交,然后通过设置target=ifrmae的name属性,设置提交成功后跳转iframe上,然后我们从iframe里获取所有内容。跨域上传也将基于这种原理进行操作。
html代码:
<form id="submit_file" class="upload_form" action="你要提交的地址" method="post" enctype="multipart/form-data" target="upload_iframe"><!--upload_iframe指向下面的ifrmae--> <input type="file" name="pic" value="" id="fileupload" style="display:block"> </form> <iframe src="" frameborder="0" id="upload_iframe" name="upload_iframe"></iframe>
js代码:从iframe获取form提交后的返回值就是我们想要的数据了
var text =document.getElementById("upload_iframe").contentWindow.document.body.innerText;//取得返回值
跨域时
运用上边第二种方式,把返回值返回到iframe上,只是取值时会发生跨域的问提。现在就是要解决这种问题。
如果是ie10及其以上的话,直接在提交的后台处理,Access-Control-Allow-Origin处理成当前域名可访问,然后就可以轻松运用第二种方式处理了。
如果是ie9及其以下,
1)在js里设置 document.domain = “基础域名”;
2)后台给的返回值里加上下边一段(js代码不存在跨域说法)
<script type="text/javascript">document.domain = "基础域名";</script>
需要的返回的参数放到一个div里,用第二种方法获取值
注意:(1)在有些浏览器里即使这么做还会报跨域的错误,这时我们需要在iframe的src里提前设置基础域相同。
<iframe src="javascript:void((function(){document.open();document.domain=基础域名';document.close()})())" frameborder="0" id="upload_iframe" name="upload_iframe"></iframe>
(2)注意在获取ifrme里值的时候,会遇到不知道什么时候会上传完成返回值到iframe里,这时候我们需要用setInterval实时监控iframe里的值,等到iframe里有值时在取值
0 0
- 跨域上传文件
- 跨域文件上传
- 跨域文件上传解决方案
- 实现跨域文件上传
- ueditor跨域上传文件
- ajax异步跨域上传文件,并显示上传进度
- form上传文件以及跨域异步上传
- 纯js实现跨域上传文件
- form+iframe解决跨域上传文件
- POST方式跨域上传文件
- POST方式跨域上传文件
- kindeditor的跨域上传文件
- java实现文件的跨域上传
- 文件上传,iframe跨域数据提交
- ajaxfileupload上传文件跨域实战解决
- ajax跨域及文件上传进度条
- Ueditor跨域上传文件设置
- ExtJs使用ajax跨域上传文件
- Scala学习整理[第三十一章 连接符解析]<Programming In Scala>
- STM32学习笔记(一)----基本位操作
- AI
- BootStrap栅格布局
- sql游标学习
- 跨域上传文件
- 7.5.2
- 超多Android资源站整理 值得一看
- shell多线程脚本
- 分布式锁实现方式二 基于Redis的分布式锁
- C++类型重定义错误的解决方法
- Hibernate主键生成策略
- writing-mode && direction
- 如何让孩子避免近视