ueditor抓取远程图片php版,ueditor远程图片本地化的实现
/**
* 拉取远程图片
* @return mixed
*/
private function saveRemote()
{
$imgUrl = htmlspecialchars($this->fileField);
$imgUrl = str_replace("&", "&", $imgUrl);
//http开头验证
if (strpos($imgUrl, "http") !== 0) {
$this->stateInfo = $this->getStateInfo("ERROR_HTTP_LINK");
return;
}
preg_match('/(^https*://[^:/]+)/', $imgUrl, $matches);
$host_with_protocol = count($matches) > 1 ? $matches[1] : '';
// 判断是否是合法 url
if (!filter_var($host_with_protocol, FILTER_VALIDATE_URL)) {
$this->stateInfo = $this->getStateInfo("INVALID_URL");
return;
}
preg_match('/^https*://(.+)/', $host_with_protocol, $matches);
$host_without_protocol = count($matches) > 1 ? $matches[1] : '';
// 此时提取出来的可能是 ip 也有可能是域名,先获取 ip
$ip = gethostbyname($host_without_protocol);
// 判断是否是私有 ip
if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)) {
$this->stateInfo = $this->getStateInfo("INVALID_IP");
return;
}
//获取请求头并检测死链
$heads = get_headers($imgUrl, 1);
if (!(stristr($heads[0], "200") && stristr($heads[0], "OK"))) {
$this->stateInfo = $this->getStateInfo("ERROR_DEAD_LINK");
return;
}
//格式验证(扩展名验证和Content-Type验证)
$fileType = strtolower(strrchr($imgUrl, '.'));
//13sai 20170712 秀米网链接接如下http://img.xiumi.us/xmi/ua/h4qG/i/b8f2af6986e8dba51615a9d85cc82f3b-sz_1952250.JPG?x-oss-process=style/xm ,我们完善下
$fileType = (strpos($fileType, '?') > 0)? strtolower(substr($fileType,0,strpos($fileType,'?'))) : strtolower($fileType);
//echo $fileType;die();
if (!in_array($fileType, $this->config['allowFiles']) || !isset($heads['Content-Type']) || !stristr($heads['Content-Type'], "image")) { $this->stateInfo = $this->getStateInfo("ERROR_HTTP_CONTENTTYPE");
return;
}
//打开输出缓冲区并获取远程图片
ob_start(); $context = stream_context_create(
array('http' => array( 'follow_location' => false // don't follow redirects
))
);
readfile($imgUrl, false, $context);
$img = ob_get_contents();
ob_end_clean();
//13sai 20170712 此处正则有问题,修改如下
//preg_match("//[.]?[^./]*$/", $imgUrl, $m);
preg_match("//[A-za-z0-9-]+.".$fileType."/", strtolower($imgUrl), $m);
//var_dump($m);die();
$this->oriName = $m ? ltrim($m[0],'/'):"";
//$this->oriName = $m ? $m[1]:"";
//echo $this->oriName;
//die();
$this->fileSize = strlen($img);
$this->fileType = $this->getFileExt();
$this->fullName = $this->getFullName();
$this->filePath = $this->getFilePath();
$this->fileName = $this->getFileName();
$dirname = dirname($this->filePath);
//检查文件大小是否超出限制
if (!$this->checkSize()) {
$this->stateInfo = $this->getStateInfo("ERROR_SIZE_EXCEED");
return;
}
//创建目录失败
if (!file_exists($dirname) && !mkdir($dirname, 0777, true)) {
$this->stateInfo = $this->getStateInfo("ERROR_CREATE_DIR");
return;
} else if (!is_writeable($dirname)) {
$this->stateInfo = $this->getStateInfo("ERROR_DIR_NOT_WRITEABLE");
return;
}
//移动文件
if (!(file_put_contents($this->filePath, $img) && file_exists($this->filePath))) { //移动失败
$this->stateInfo = $this->getStateInfo("ERROR_WRITE_CONTENT");
} else { //移动成功
$this->stateInfo = $this->stateMap[0];
}
}
ueditor抓取远程图片php版,ueditor远程图片本地化的实现相关推荐
- 如何使用HtmlUnit 抓取网页中手机版模式?
HtmlUnit 抓取网页中手机版模式? 方式方法: 地址要正确,体现在你抓取的页面是不是PC版 or 手机版模式的URL地址 PC 和 手机版的页面样式肯定也是不一样的,所以下载的样式要一致,包括页 ...
- ueditor抓取远程图片php版,Ueditor百度编辑器远程抓取图片的开启与关闭
前言 这几天一直被百度编辑器自动抓取远程图片的功能困扰.因为这个功能吧,总是时灵时不灵的.有时候会抓取远程图片,有时候又不会抓取远程图片.相信各位都有遇到过.本人对编辑器没有太多的了解,下面如果有讲错 ...
- Scrapy爬虫:抓取大量斗图网站最新表情图片
一:目标 第一次使用Scrapy框架遇到很多坑,坚持去搜索,修改代码就可以解决问题.这次爬取的是一个斗图网站的最新表情图片www.doutula.com/photo/list,练习使用Scrapy框架 ...
- 基于urllib抓取视觉中国旗下网站的高清图片
引言 基于Pyside2开发可视化程序界面,抓取高清图片的小工具.用户可以通过输入要查找图片的名称,和需要抓取多少页进行下载到本地上,每一页的图片数量是根据网站的提供来决定的,当前对版权保护日益严格, ...
- C++ 抓取和批量下载网站上的图片或文件
随便找个图片网页https://esports.zol.com.cn/slide/688/6885385_1.html 来练手抓取和下载图片.首先要分析html代码,看下载目标的链接命名是否有规律,有 ...
- 用Scrapy抓取游民星空每周壁纸精选的图片
很早之前就想抓一些壁纸,本人喜欢去看游民星空(一个主打游戏类的综合性网站).然后很早之前就眼馋它的每周壁纸了,所以这次就将该站的每周壁纸集合中的所有壁纸抓了一下(虽然有打包的可以下,但是还是想尝试一下 ...
- 用python来抓取“煎蛋网”上面的美女图片,尺度很大哦!哈哈
所用Python环境为:python 3.3.2 用到的库为:urllib.request re 废话不多说,先上代码: import urllib.request import re#获得 ...
- 在同一子网下用wireshark抓取QQ用户发送到电脑的图片
首先设置好手机和电脑的网络,可以两个设备同时连接校园网,也可以手机连接校园网电脑连接手机热点 打开wireshark,选择WLAN 之后输入 ip.src == 手机的ip地址 发现没有数据的时候不要 ...
- 湖南工业大学电费数据抓取(完美校园版)
前言 之前写了一篇我们学校电费查询数据获取的博客,那篇文章的数据源是工大助手,因为工大助手对参数进行了一些加密,所以要获取到数据必须要进行破解,这样难度就增加了很多,今天我要爬的是完美校园网站的,这个 ...
最新文章
- 《中国人工智能学会通讯》——4.41 两种学习之间有什么区别?
- 机器学习 Softmax classifier (无隐含层)
- DevOps案例研究:知人善任——Google敏捷核心文化
- 00001-整数倒置-Java-leetcode-要考虑到溢出问题
- 天黑时间跟经度还是纬度有关_经纬度和时间有什么关系
- 安全系列之一:如何利用IPSec保证远程桌面的安全性!(上)
- 大佬带路,用Java实现天天酷跑(附源码),网友:这也太TM屌了~
- jquery 插件zClip实现复制到剪贴板功能
- AddThis AddFeed WordPress插件发布 [转]
- pom文件中配置repositories
- 软件开发项目流程 - 立项
- 什么是 SNMP 和 MIB什么是 SNMP 和 MIB
- 图模型在欺诈检测应用一点看法
- shell关闭占用某端口应用,并重启
- 【DEBUG】OMAPL138 Connect to PRSC failed
- php exception trace,php Exception打印error trace 实例
- 你和那些优秀的人差距在哪里?
- 如何在Windows 10桌面显示我的电脑和控制面板等系统图标
- 28马力轮式拖拉机最终传动及驱动轴设计(说明书+CAD图纸+文献翻译)
- RPM打包探索(rpm-max翻译整理)