JQuery File Upload实现跨域上传

举报
zekelove 发表于 2021/10/17 10:51:50 2021/10/17
【摘要】 使用JQuery插件JQuery File Upload实现跨域上传方案

最近在做一个互联网项目,方案为前后端分离,主要负责前端框架设计,经过业务分析,项目采用了Requirejs+avalonjs+jquery三个框架完成开发。

前后端通过跨域实现接口调用,中间也发现和遇到了不少问题,尤其是在富文本编辑器和上传插件跨域的处理过程中,费劲了脑汁,最终总算把问题解决了,记录一下解决过程,以供大家参考和学习。

上传插件(jQuery File Upload)

上传选择了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>

JS脚本

$('#fileupload').fileupload({
    url: config.getUrl()+"upload!upload.do",
    type:"POST",
    dataType:"json",
    autoUpload : true,
    acceptFileTypes: /(\.|\/)(jpe?g|png)$/i,
    formData: {model:1},
    forceIframeTransport: true,
    redirectParamName:"callUrl",
    redirect:"http://"+window.location.host+"/app/callupload.html?",//回调页面
    done: function (e, data) {
        $.each(data.result.files, function (index, file) {
            model.fileVO.push({attach_root_id:file.id,file_path:file.url});
        });
    },
    fail:function(e,data){
        console.log("上传失败:"+data.errorThrown);
    }
});

创建回调页面(callupload.html)

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

后台上传API

后台使用.NET的MVC模式开发的简单的上传示例接口

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

文章内容如果写的存在问题欢迎留言指出,让我们共同交流,共同探讨,共同进步~~~

文章如果对你有帮助,动动你的小手点个赞,鼓励一下,给我前行的动力。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。