`
paulfzm
  • 浏览: 876143 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

iframe 跨域上传文件

 
阅读更多

iframe无刷新跨域上传文件并获取返回值

通常我们会有一个统一的上传接口,这个接口会被其他的服务调用。如果出现不同域,还需要无刷新上传文件,并且获取返回值,这就有点麻烦了。比如,新浪微博启用了新域名www.weibo.com,但接口还是使用原来的域:picupload.t.sina.com.cn。

研究了一下新浪微博的处理方法,这里大概演示一下。

首先是一个正常的上传页面 upload.html

<script>
	// 这个函数将来会被iframe用到
	function getIframeVal(val)
	{
		alert(val);
	}
</script>

<!-- 我把upload.com指向了127.0.0.1 -->
<form method="post" target="if" enctype="multipart/form-data" action="http://upload.com/playground/js/deal.php?cb=http://localhost/playground/js/deal_cd.html">
	<input type="file" name="file" />
	<input type="SUBMIT" value="upload" />
</form>
<IFRAME id="if" name="if" src="about:blank" frameborder='0'></IFRAME>

这里有一个关键点是form的target要指向iframe,同时把iframe隐藏起来,这样上传的处理结果就会显示在该iframe里。action里的cb(callback)参数表示处理完成后要跳转的url,因为我们的目标是iframe,所以只会把跳转的页面输出到iframe,而不会让当前页面跳转。

还有一点,callback url要和当前页面同域。跨域的iframe无法调用父页面的内容。

再来看看deal.php,也就是form的action

<?php
// deal upload file
// and get file id, you can pass other params either
header('location:'.$_GET['cb'].'?file_id=123');

这里可以处理文件,然后入库。操作完成后,把文件的id及其他信息都放在url里,最后跳转到这个url。

最后来看看deal_cd.html,也就是刚刚deal.php跳转到的url,这个文件的内容会填充到页面的iframe里。

<script type="text/javascript">
	var rs = window.location.search.split('?').slice(1);
	window.parent.getIframeVal(rs.toString().split('=').slice(1));
</script>

这里调用了父窗口的getIframeVal方法,这样父页面就获得了文件的id。


--EOF--

转自 :http://blog.leezhong.com/tech/2011/05/06/crossdomain-upload.html
分享到:
评论

相关推荐

    form+iframe解决跨域上传文件的方法

    下面小编就为大家带来一篇form+iframe解决跨域上传文件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    文件上传,iframe跨域数据提交的实现

    下面小编就为大家带来一篇文件上传,iframe跨域数据提交的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    HTML5 postMessage+iframe实现文件跨域异步上传

    HTML5 postMessage+iframe实现文件跨域异步上传 http://blog.csdn.net/jiangsyace/article/details/43858443

    kindeditor 编辑器(解决上传问题)

    kindeditor 相信很多人都现在用此编辑器,asp.net开发者也居多,此软件上传文件一开始是需要自己配置的,很多新手一时间不知道要怎么配置,。于是花费了少量时间,帮新手们配置好了,直接引用js文件,便可以上传或者...

    java跨全域兼容ie/ff/chrome浏览器多文件上传(原创)

    使用jquery/jsp/servlet/iframe实现跨浏览器跨全(子)域多文件上传操作.希望能给大家带来帮助.

    ajax(iframe)无刷新提交表单、上传文件

    要通过ajax保存表单,一切都OK,测试也通过,却发现文件没有上传成功!然后就有了用 ajax是否可以上传文件的疑问。

    js跨域iframepostMessage提交表单

    利用iframe对form表单(含文件上传)进行跨任何域提交,无刷新且可以返回值

    Asp.Net模拟表单提交数据和上传文件的实现代码

    如果你需要跨域上传内容到另外一个域名并且需要获取返回值,使用Asp.Net的作为代理是最好的办法,要是客户端直接提交到iframe中,由于跨域是无法用javascript获取到iframe中返回的内容的。此时需要在自己的网站做一...

    UploadForm.js:用于上传表单数据的 Javascript 插件,包括具有 XHR2 和 IFrame 回退的文件

    用于上传表单数据的 Javascript 插件,包括具有 XHR2 和 IFrame 回退的文件。 该插件支持: 使用 FormData 上传 XMLHttpRequest2 文件 IFrame 回退 事件回调(beforesend、progress、load、error) 中止和超时 ...

    一个基于 SpringBoot 的快速开发框架,内置代码生成器

    封装 JavaWeb 常见功能:文件上传、角色授权、Redis控制台、API日志统计、跨域处理 等等。内置代码生成器,一键生成:普通input、多行文本域、富文本编辑器、日期控件、图片上传、音频上传、视频上传、 多图上传、树...

    YodPHP 1.4.1.zip

    update:文件通用选择,支持跨域,允许第三方调用;部分服务器获取当前url异常情况兼容处理;tar解压,文件名过长兼容处理(路径大于100字符处理);图片预览大图处理;生成多级缩略图;权限组开启了文件下载权限,对应...

    NodeDemos:节点演示

    iframe自适应,同域和跨域下实现 无刷新文件上传(fileupload) 利用Express4.12.1框架 + multiparty工具包实现了Node下的文件无刷新上传功能 利用iframe实现 利用ajax实现 豆瓣爬虫(crawler-douban) 利用nodejs...

    python入门到高级全栈工程师培训 第3期 附课件代码

    04 Form组件上传文件 05 上传相关内容梳理 06 Model操作知识提问 07 Model操作概述 08 Model字段 09 Model连表字段参数详解 10 Model自定义多对多第三张表 11 强插一道面试题 12 Model连表操作梳理 13 多对多自关联 ...

    WebIM_Ajax框架

    5.iframe跨域 6.心跳包 7.ajax上传图片 8.裁切图片 9.js表单验证 10.悬浮层拖拽 11.列表节点拖拽排序 12.列表节点拖拽移动 13.Fixed 效果(固定居上/中/下、左/中/右),兼容 IE6 14.base64 编码 15.网站风格切换 16...

    Java微服务架构l零从基础到精通高清视频教程全套 163课

    138 客户端与服务端通信-解决跨域问题 139 Redis 为数据添加缓存-Redis HA 简介 140 Redis 为数据添加缓存-Redis Sentinel 高可用集群部署 141 Redis 为数据添加缓存-Redis 客户端的使用 142 Redis 为数据添加缓存-...

    Java微服务架构163课

    138 客户端与服务端通信-解决跨域问题 139 Redis 为数据添加缓存-Redis HA 简介 140 Redis 为数据添加缓存-Redis Sentinel 高可用集群部署 141 Redis 为数据添加缓存-Redis 客户端的使用 142 Redis 为数据添加...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    Django获取多个数据以及文件上传 Django的CBV和FBV Django模板语言循环字典 Django基于正则表达式的URL Django对应的路由名称 Django路由分发 DjangoORM基本创建基本类型以及生成数据库结构 DjangoORM使用mysql注意 ...

    VeryIDE Bee 互动营销平台 v1.4 UTF-8.rar

    感谢 湖南妈妈网 协助测试 修正 辩论在修改时会丢失正反方票数的问题,感谢 许昌论坛 协助测试 修正 表单中文件上传选项的验证无效的问题,以及非必填项验证问题,感谢 大舟山 和 得意生活 协助测试 修正 "轮换广告...

Global site tag (gtag.js) - Google Analytics