js跨域上传文件 iframe
封装好的jq插件
- (function () {
- var iframe = '<iframe name="jqUploadIframe" style="display: none"></iframe>';
- function getSearchObjct(window) {
- var search;
- try {
- search = window.location.search.substr();
- } catch (e) {
- return null;
- }
- if (search == "") return "";
- var keyValue = search.split("&");
- var result = {};
- for (var i = ; i < keyValue.length; i++) {
- var onek = keyValue[i].split("=");
- result[onek[]] = decodeURI(onek[]);
- }
- return result;
- }
- function getRootPath() {
- var curWwwPath = window.document.location.href;
- var pathName = window.document.location.pathname;
- var pos = curWwwPath.indexOf(pathName);
- var localhostPaht = curWwwPath.substring(, pos);
- var projectName = pathName.substring(, pathName.substr().indexOf('/') + );
- return (localhostPaht + projectName);
- }
- var methods = {
- //跨域上传
- crossDomain: function (op) {
- this.attr("target", "jqUploadIframe");
- var $iframe = $(iframe);
- var val = "window.location.href='" + getRootPath() + "/jqUpload32495982348952?data=massage'";
- this.append('<input type="hidden" class="jqUpload-localhostname" ' +
- 'name="uploadCall" value="' + val + '"/>');
- $iframe[].onload = function () {
- var searchData = getSearchObjct(this.contentWindow);
- if (searchData == "") {
- return;
- } else if (searchData == null) {
- op.error();
- } else if (typeof searchData == "object") {
- op.success(searchData.data);
- }
- $iframe.remove();
- $(".jqUpload-localhostname").remove();
- }
- this.append($iframe);
- $(this).submit();
- }
- }
- $.fn.jqAjaxUpload = function (op) {
- methods.crossDomain.apply(this, [op])
- }
- })()
前台调用
- //需要提交的表单
var form = $("<form action='http://www.cnblogs.com/GoCircle/SaveUploadedFile' method='post' enctype='multipart/form-data'></form>");- form.append($("<input name='formFile' value='" + clearBase64 + "' />"));
- form.append($("<input name='filename' value='" + fileName + "' />"));
- form.append($("<input name='maintainID' value='" + maintainid + "' />"));
- $('#iframeArea').append(form);//必须要追加到当前html页中
- $(form).jqAjaxUpload({
- isCrossDomain: true,
- success: function (result) {
- },
- error: function () {
- }
- })
后台C# mvc
[AllowAnonymousAttribute]//允许所有请求
[HttpPost]
- public ActionResult SaveUploadedFile(String formFile, String filename, String maintainID)
- {
//这里必须为这种格式- return Content("<script>" + Request["uploadCall"].Replace("massage", isSavedSuccessfully) + "</script>");
- }
js跨域上传文件 iframe的更多相关文章
- [javascript] ajaxfileupload.js 跨域上传文件
原文地址: http://www.ueffort.com/jqueryajaxfileupload-js-duo-wen-jian-shang-chuan-chuan-zhi-kua-yu/ 跨域 这 ...
- Angular4 后台管理系统搭建(10) - 做一个通用的可跨域上传文件的组件
写的很慢,不知不觉这是第十篇了.但是我其他事情太多,只能抽空写下.现在angular4或angular2流行的上传方式是ng2-file-upload.它的功能很强大.但是我没有配置成可以跨域上传的. ...
- iframe无刷新跨域上传文件并获取返回值
通常我们会有一个统一的上传接口,这个接口会被其他的服务调用.如果出现不同域,还需要无刷新上传文件,并且获取返回值,这就有点麻烦了.比如,新浪微博启用了新域名www.weibo.com,但接口还是使用原 ...
- iframe无刷新跨域上传文件并获得返回值
原文:http://geeksun.iteye.com/blog/1070607 需求:从S平台上传文件到R平台,上传成功后R平台返回给S平台一个值,S平台是在一个页面弹出的浮窗里上传文件,所以不能用 ...
- springmvc结合ajax实现跨域上传文件
本方法的思路是:先在前端利用FileReader将图片转换成base64编码,然后将编码字符串形式传递到后台(前提是服务端设置了允许跨域),后端再把base64编码转换成图片. 前端代码: <! ...
- asp.net跨域上传文件
前端: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" con ...
- POST方式跨域上传文件
JSONP请求有限制: 第一,不能跳出两层, 第二,不支持POST. 往往解决跨域POST请求的方案是个"古老"方法, 请求同域下的iframe. 服务器端: 需要附加头信息: ...
- springmvc跨域上传文件问题
把以下文件放到webapps的root文件夹下: 1.clientaccesspolicy.xml <?xml version="1.0" encoding="ut ...
- Ueditor1.4.3实现跨域上传到独立文件服务器,完美解决单文件和多文件上传!
再写配置方法之前先吐槽一下网上的各种教程,TM没一个有卵用,一群傻屌不会写就别写,写了就要负责. 百度google搜了半天,全是配置什么document.domain,根域名什么的,我只想对你说: 好 ...
随机推荐
- C#之WCF入门1—简单的wcf例子
第一步:创建一个空的解决方案,新建一个WCF服务应用程序项目(使用默认名字) 来模拟服务端,新建一个控制台应用程序项目(名称改为 ConsoleApp)来模拟客户端. 第二步:简单分析WcfServi ...
- php缓存技术——memcache常用函数详解
php缓存技术——memcache常用函数详解 2016-04-07 aileen PHP编程 Memcache函数库是在PECL(PHP Extension Community Library)中, ...
- 【Docker 命令】- top命令
docker top :查看容器中运行的进程信息,支持 ps 命令参数. 语法 docker top [OPTIONS] CONTAINER [ps OPTIONS] 容器运行时不一定有/bin/ba ...
- SPDY以及HTTP2.0
背景介绍 HTTP2.0跟SPDY在不少理念上是相似的,目的都是为了提升HTTP1.1的性能. HTTP2.0将会是业界的标准,比SPDY要完善,今后可能会都转向http2.0而放弃SPDY. SPD ...
- listBox和pictureBox的使用
重要属性:pictureBox中SizeMode可以更改图像显示的尺寸大小. using System; using System.Collections.Generic; using System. ...
- Cacti自定义脚本,监测Docker信息(Script/Command方式)
一 环境背景 监控主机A:192.168.24.231:被监控主机B:192.168.24.233 A/B主机,通过公私钥建立ssh连接 [操作B主机时不需要输入密码,详见笔记:http://app. ...
- Qt Meta Object system 学习
原文地址:http://blog.csdn.net/ilvu999/article/details/8049908 使用 meta object system 继承自 QOject 类定义中添加 Q_ ...
- 【Python】python-内置常量
引言 Python的内置常量不多,只有6个,分别是True.False.None.NotImplemented.Ellipsis.__debug__ 一.True 1.True是bool类型用来表示的 ...
- 【bzoj1038】瞭望塔 半平面交
题目描述 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们将H村抽象为一维的轮廓.如下图所示 我们可以用一条山的上方轮廓折线(x1, y1), ( ...
- Django 2.0 学习(13):Django模板继承和静态文件
Django模板继承和静态文件 模板继承(extend) Django模板引擎中最强大也是最复杂的部分就是模板继承了,模板继承可以让我们创建一个基本的"骨架"模板,它可以包含网页中 ...