D2Admin使用ueditor上传图片,上传错误
由于做了前后端分离,所以存在跨域的问题。首先解决跨域的问题。
/php/controller.php
在6行左右,也就是header函数的后面,添加
// 允许跨域 header('Access-Control-Allow-Origin:*');//允许跨域 if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { header('Access-Control-Allow-Headers:x-requested-with,content-type,token');//浏览器页面ajax跨域请求会请求2次,第一次会发送OPTIONS预请求,不进行处理,直接exit返回,但因为下次发送真正的请求头部有带token,所以这里设置允许下次请求头带token否者下次请求无法成功 exit("ok"); }
\public\lib\UEditor\ueditor.all.js,大约24582行
// 下面三行注释掉
// domUtils.on(iframe, 'load', callback);
// domUtils.on(iframe, 'load', callback);
// form.action = utils.formatUrl(imageActionUrl + (imageActionUrl.indexOf('?') == -1 ? '?':'&') + params);
// form.submit();
var formdata = new FormData(form); var arr,reg=new RegExp("(^| )_token=([^;]*)(;|$)"); var myForm = document.getElementById("myForm"); var xhr= new XMLHttpRequest(); xhr.open("POST", me.getOpt('serverUrl')+'?action=uploadimage', true); xhr.onreadystatechange = function() { if (xhr.readyState === 4) if ((xhr.status >=200 && xhr.status < 300) || xhr.status == 304) alert(xhr.responseText); } xhr.send(formdata); xhr.onreadystatechange = function () { if(xhr.readyState == 4) { var response = JSON.parse(xhr.responseText); if(response.state=='SUCCESS' ){ loader = me.document.getElementById(loadingId); loader.setAttribute('src', me.getOpt('serverUrl')+response.url); loader.setAttribute('_src', me.getOpt('serverUrl')+response.url); loader.setAttribute('title', response.title || ''); loader.setAttribute('alt', response.original || ''); loader.removeAttribute('id'); domUtils.removeClasses(loader, 'loadingclass'); } } }

浙公网安备 33010602011771号