ueditor上传图⽚跨域问题解决
做前后端分离的项⽬⽤到UEditor,把上传图⽚程序拿出来放到了接⼝程序中,上传图⽚接⼝已经做了跨域处理,按理说编辑器中上传图⽚应该不会有问题。可是配置好图⽚上传路径后,运⾏,打开调试,测试⼀下,报错了:
到上传图⽚的代码,发现引⽤的是webuploader.js,先修改下,直接引⽤webuploader.js。
经过调试到,实际上传图⽚⾛的就是这⾥了,webuploader.js⽂件。
起初在⽹上查,尝试了各种⽅案修改前后端代码,都不成功。偶然想起⽤jquery ajax上传试试吧,正好程序已经引⽤了jquery。于是修改上⾯那⾏代码:
$.ajax({
url:server,
dataType:'json',
hod,
async: false,
data: formData,
processData : false, // 使数据不做处理
contentType : false, // 不要设置Content-Type请求头
success: function(data){
console.log(data);
},
error:function(response){
console.log(response);
ajax实例 文件浏览}
});
// xhr.send( formData );
⼀试之下,竟然成功了,看来后端的跨域设置肯定没问题。
那这样也不⾏啊,前端进度什么的都没了。
到更新进度的代码,就这⾥了。
那让jquery ajax使⽤这⾥的xhr对象⾏不⾏呢,试⼀下,修改上传部分代码:$.ajax({
url:server,
dataType:'json',
hod,
async: false,
data: formData,
xhr: function(){
return xhr; // 使⽤上⾯初始化好的 xhr 对象
},
processData : false, // 使数据不做处理
contentType : false, // 不要设置Content-Type请求头
success: function(data){
console.log(data);
},
error:function(response){
console.log(response);
}
});
// xhr.send( formData );
上传图⽚测试⼀下,ok,成功啦。
看起来似乎就这么结束了,可这对我来说这算是意外之喜,我真没觉得这样就能成功。写⽂章之前真正⽤的时候可没这么容易就解决这个问题。好吧,对⽐了下,发现之前写的代码没有 async: false 这个属性。好,现在注释掉这个属性再试,果然不⾏了,跨域错误⼜报出来了。
下⾯说另⼀种能异步上传的解决⽅案,研究过程就不说了。
1、到这⾏代码,注释掉,去掉请求头的设置。
2、到负责更新进度的代码,注释掉这⼀段
3、把刚才修改成jquery ajax上传的代码删掉,⽤原来的代码
再试,ok,是成功的,更新进度的功能依然存在。
说明⼀下:这⾥⽤的是编辑器的多图上传,单图上传的没使⽤,想来修改⽅法应该也是同样的,需要⽤的可以⾃⼰尝试修改。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论