jQuery File Upload跨域上传

  最近在做一个一手粮互联网项目,方案为前后端分离,自己负责前端框架,采用了Requirejs+avalonjs+jquery三个框架完成。

  前后端通过跨域实现接口调用,中间也发现了不少问题,尤其是在富文本编辑器和上传插件跨域的处理过程中,费劲了脑汁,总算解决了。

  上传选择了jQuery File Upload,兼容性还是相对不错,并且支持跨域,但是没有一个完整的跨域Demo,只能看源码找帮助。

  下载地址:https://github.com/blueimp/jQuery-File-Upload

  页面实现方法:

  页面引入:

  <link rel="stylesheet" type="text/css" href="../../src/widget/jQueryFileUpload/css/jquery.fileupload.css">  <link rel="stylesheet" type="text/css" href="../../src/widget/jQueryFileUpload/css/jquery.fileupload-ui.css">  <script type="text/javascript" src=".../../src/widget/jQueryFileUpload/js/vendor/jquery.ui.widget.js"></script>  <script type="text/javascript" src=".../../src/widget/jQueryFileUpload/js/jquery.iframe-transport.js"></script>  <script type="text/javascript" src=".../../src/widget/jQueryFileUpload/js/jquery.fileupload.js"></script>   

  上传页面  <input id="fileupload" type="file" name="files" multiple>

 1 $(‘#fileupload‘).fileupload({
 2             url: config.getUrl()+"upload!upload.do",
 3             type:"POST",
 4             dataType:"json",
 5             autoUpload : true,
 6             acceptFileTypes: /(\.|\/)(jpe?g|png)$/i,
 7             formData: {model:1},
 8             forceIframeTransport: true,
 9             redirectParamName:"callUrl",
10             redirect:"http://"+window.location.host+"/app/callupload.html?",//回调页面
11             done: function (e, data) {
12                 $.each(data.result.files, function (index, file) {
13                     model.fileVO.push({attach_root_id:file.id,file_path:file.url});
14                 });
15             },
16             fail:function(e,data){
17                 console.log("上传失败:"+data.errorThrown);
18             }
19         });

  创建一个回调页面callupload.html

<body>
    <script type="text/javascript">
        document.body.innerText=document.body.textContent=decodeURIComponent(window.location.search.slice(1));
    </script>
</body>

  上传后台:

1 string result = file.FileName;
2              context.Response.Headers.Add("Cache-Control", "no-cache");
3              context.Response.AddHeader("Access-Control-Allow-Origin", "*");
4              context.Response.AddHeader("Access-Control-Allow-Headers", "x-requested-with");
5              context.Response.AddHeader("Location", callUrl + "?msg=" + result);
6              context.Response.Redirect(callUrl + "?msg=" + result); 

  欢迎大家来交流!

  

时间: 2024-12-20 07:20:14

jQuery File Upload跨域上传的相关文章

用jQuery File Upload做的上传控件demo,支持同页面多个上传按钮

需求 有这么一个需求,一个form有多个文件要上传,但又不是传统的图片批量上传那种,是类似下图这种需求,一开始是用的swfupload做的上传,但是问题是如果有多个按钮的话,就要写很多重复的代码,于为了代码的简洁所以就开始寻求其他的方法,期间试过uploadify,但是由于样式始终调不出来,最后就放弃了,直到发现这么个小巧的玩意,jQuery File Upload. 本文包含了upload的js实现,html的分析,css的实现等内容,文章末尾有git地址 最简运行时 官网下载的demo有N多

Uploadify跨域上传原理

引用:http://www.cnblogs.com/me-sa/archive/2010/05/21/How-Uploadify-Cross-Domain.html < 回头再说:jQuery跨域原理 >一文提到浏览器的同源策略以及使用JsonP的方式实现跨域;在评论中金色海洋提出了一个问题: 我最近在用 uploadify + ashx 来做文件上传的功能.都测试成功了,但是发现我可以提交到其他的网站里面. 我是在本地测试了.两个网站,IP地址相同,使用端口来区分. 一个端口是8001,另一

Js 跨域上传文件

代码在github上( https://github.com/andygithubchen/jsUpload ),请结合github上的文件阅读. 主要实现js跨域上传文件,这里的跨域目前只在两个域名所指向的服务器在同一局域网内. 当然,这两种方案都可以做同域名上传. 例如: 192.168.1.60 www.test.cn 192.168.1.61 www.video.cn 如果要在www.test.com域名下上传文件到www.video.com域名下,可以使用下面这两个方案: 方案一(在s

跨域通信/跨域上传浅析

web项目跨域问题主要包括跨域通信和跨域上传,下面对这两方面分别做一个分析,具体项目中用哪个方案要看项目具体需求. 跨域通信 jsonp hash server proxy window.name cors postmessage redirect jsonp 原理:发起一个GET请求,回调函数带到请求参数中,把数据发送过去 坏处:服务器需要支持jsoncallback参数 好处:业界比较通用的方案,包括打点等操作都可以用类似技术 浏览器支持:chrome/firefox/safari/oper

asp.net mvc 文件跨域上传,接收返回结果

在系统中我们可能有各种各样的文件上传,这样我们可能会把文件模块单独部署一台服务器,这样在上传时就会遇到跨域问题.我们可以先上传到服务端然后通过httpClient等技术再上传到文件服务器,这样就不会存在跨域问题,但是这样多出了服务器中转的一个步骤,现在我们说一下如何在客户端直接跨域上传到文件服务器. 1.文件服务器部署一个文件上传接口(实现技术:webapi,webservice,mvc等等) 文件上传接口示例如下(MVC方式): /// <summary> /// 上传接口 /// <

跨域上传文件(还是没有明白)

转: 最近工作中有这样的需求:项目在A机器(假设域名为www.a.com)上跑,资源文件要存储在专门的资源机器B(假设域名为www.b.com),要求在A上传文件到B上同时将上传信息以json格式返回. 由于之前的项目都比较小,也没有这样的需求,基本都是在单机上操作,自然涉及不到跨域的问题,初次遇到这个问题,比较棘手,进行了如下尝试均失败. 尝试一:在A机器上的页面中嵌入一个iframe,iframe的src指向B机器的一个上传页面,这样可以很容易将资源上传到B机器,但是却很难实现“以json格

ie8、9跨域上传文件(图片)

前言:新的项目,需要将图片跨域上传到专门的图片服务器上面,而且还要支持ie8/9的跨域上传. 解决:为了解决这个方案踩了很多坑,特此记录.以前收集了一些上传的组件 文件(图片)上传组件 ,各有优劣. 1:因为google在将来的版本不在支持flash了,所以不想使用swf支撑的组件上传 2:尝试了AjaxFileUpload 组件,这个在google跨域直接挂掉了. 3:尝试百度的上传组件,Web Uploader 这个挺不错,支持跨域,但是ie8/9跨域支持不大好,只好放弃了(也有可能是我没有

Ueditor1.4.3实现跨域上传到独立文件服务器,完美解决单文件和多文件上传!

再写配置方法之前先吐槽一下网上的各种教程,TM没一个有卵用,一群傻屌不会写就别写,写了就要负责. 百度google搜了半天,全是配置什么document.domain,根域名什么的,我只想对你说: 好了,talk is cheap show me the code,言归正传: 首先去ue官网下载1.43版 .net版本,解压之后,把demo文件夹改成web,把net那个文件夹拷贝出来放到web外面,如图: 这样就把编辑器的静态文件和动态文件分离了,动态部分放到文件服务器上,静态部分集成到我们的网

h5 文件跨域上传

var imgUrl = "http://www.xxx.xxxxx.xxxx";$.ajax({ url:imgUrl, type: 'POST', crossDomain: true, jsonp: "jsoncallback", data: formData, contentType: false, //必须 processData: false, //不能用success,否则不执行 complete: function (data) { var data