ueditor抓取不到微信图片及其他无后缀的图片问题
看到一些好的文章,想把外面的内容给复制下来.固然是连文字带图片一同抓取了.
因而被内容直接复制到后台的UEDITOR中,后果发明图片没有被抓取下来.baidu材料未果.只好本人研讨了.
发明首要问题还在于ueditor对传送过去的图片地址处置过分容易,在提取后缀的时分只是采取取"."前面的字串串方法.
原代码为 (Uploader.class文件)
<% $fileType = strtolower(strrchr($imgUrl, '.'));%>
但微信里的文章图片是没有后缀的,也有一些网站的图片也没有后缀,这样$fileType就会获得一个错误的值,在前面的后缀类型断定是会直接给否掉.同时 stristr($heads['Content-Type'], "image")这句话也会报错,估量也是由于是没有后缀的问题.
微信图片中有一个wx_fmt参数,外面的值=png jpeg gif,认为该值即图片格局,因而将该值作为了$fileType的值.(容易粗犷些,直接全部指定为gif也行),微信图片抓取成功.
但在运用IE检查时,发明非常多图片不显示.查了很多多少问题,最初发明,本来微信誉的是webp格局的图片,IE基本不支撑.哭一个.终极只好设定只抓取微信的gif格局图片(微信貌似静态是gif,静态都是webp).
上面的办法关于抓取无后缀的图片是可行的,大家可以尝尝.有必须全部代码的可以给我留言.
ueidtor抓取远程图片成功后,没法主动变卦编辑器中的图片地址问题
在测试过程当中,还发明了另外一个问题ueditor抓取图片成功,并曾经上传到Server后,编辑器中的代码并没有更新为本人Server上的图片途径.又是费力找缘由
ueditor.all.min.js查找catchRemoteImage.
UE.plugins.catchremoteimage=function(){var d=this,c=UE.ajax;!1!==d.options.catchRemoteImageEnable&&(d.setOpt({catchRemoteImageEnable:!1}),d.addListener("afterpaste",function(){d.fireEvent("catchRemoteImage")}),d.addListener("catchRemoteImage",function(){function b(a,b){var f=p.serializeParam(d.queryCommandValue("serverparam"))||"",f=p.formatUrl(e+(-1==e.indexOf("?")?"?":"&")+f),h={method:"POST",dataType:p.isCrossDomainUrl(f)?"jsonp":"",timeout:6E4,onsuccess:b.success,onerror:b.error};h[g]=a;c.request(f,h)}for(var a=d.getOpt("catcherLocalDomain"),e=d.getActionUrl(d.getOpt("catcherActionName")),h=d.getOpt("catcherUrlPrefix"),g=d.getOpt("catcherFieldName"),l=[],k=f.getElementsByTagName(d.document,"img"),m=function(a,b){if(-1!=a.indexOf(location.host)||/(^.)|(^/)/.test(a))return!0;if(b)for(var c=0,e;e=b[c++];)if(-1!==a.indexOf(e))return!0;return!1},n=0,q;q=k[n++];)q.getAttribute("word_img")||(q=q.getAttribute("_src")||q.src||"",/^(https?|ftp):/i.test(q)&&!m(q,a)&&l.push(q));l.length&&b(l,{success:function(a){try{var b=void 0!==a.state?a:eval("("+a.responseText+")")}catch(c){return}var e,g,n,l=b.list;for(a=0;b=k[a++];)for(n=b.getAttribute("_src")||b.src||"",e=0;g=l[e++];){//判定原始名称及返回的值是否相同,把返回值进行&还原var my_g_source=g.source.replace(/&/g,"&");if(n==my_g_source&&"SUCCESS"==g.state){e=h+g.url;f.setAttributes(b,{src:e,_src:e});break}}//....
上述代码的最后,n为所抓取图片的原始url, g.source返回抓取成功后返回的原始url两者需要比较,相同时,才会去变更成自己服务器上的图片url.但返回的地址是编码后的.一些特殊字符经过了重编译,需要进行一些还原.
my_g_source=g.source.replace(/&/g,"&");//只是对微信抓取图片有效,如果抓取其他网站图片失效,可以重新进行一些正则还原.
2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务