/**

* 拉取远程图片

* @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远程图片本地化的实现相关推荐

  1. 如何使用HtmlUnit 抓取网页中手机版模式?

    HtmlUnit 抓取网页中手机版模式? 方式方法: 地址要正确,体现在你抓取的页面是不是PC版 or 手机版模式的URL地址 PC 和 手机版的页面样式肯定也是不一样的,所以下载的样式要一致,包括页 ...

  2. ueditor抓取远程图片php版,Ueditor百度编辑器远程抓取图片的开启与关闭

    前言 这几天一直被百度编辑器自动抓取远程图片的功能困扰.因为这个功能吧,总是时灵时不灵的.有时候会抓取远程图片,有时候又不会抓取远程图片.相信各位都有遇到过.本人对编辑器没有太多的了解,下面如果有讲错 ...

  3. Scrapy爬虫:抓取大量斗图网站最新表情图片

    一:目标 第一次使用Scrapy框架遇到很多坑,坚持去搜索,修改代码就可以解决问题.这次爬取的是一个斗图网站的最新表情图片www.doutula.com/photo/list,练习使用Scrapy框架 ...

  4. 基于urllib抓取视觉中国旗下网站的高清图片

    引言 基于Pyside2开发可视化程序界面,抓取高清图片的小工具.用户可以通过输入要查找图片的名称,和需要抓取多少页进行下载到本地上,每一页的图片数量是根据网站的提供来决定的,当前对版权保护日益严格, ...

  5. C++ 抓取和批量下载网站上的图片或文件

    随便找个图片网页https://esports.zol.com.cn/slide/688/6885385_1.html 来练手抓取和下载图片.首先要分析html代码,看下载目标的链接命名是否有规律,有 ...

  6. 用Scrapy抓取游民星空每周壁纸精选的图片

    很早之前就想抓一些壁纸,本人喜欢去看游民星空(一个主打游戏类的综合性网站).然后很早之前就眼馋它的每周壁纸了,所以这次就将该站的每周壁纸集合中的所有壁纸抓了一下(虽然有打包的可以下,但是还是想尝试一下 ...

  7. 用python来抓取“煎蛋网”上面的美女图片,尺度很大哦!哈哈

    所用Python环境为:python 3.3.2   用到的库为:urllib.request    re 废话不多说,先上代码: import urllib.request import re#获得 ...

  8. 在同一子网下用wireshark抓取QQ用户发送到电脑的图片

    首先设置好手机和电脑的网络,可以两个设备同时连接校园网,也可以手机连接校园网电脑连接手机热点 打开wireshark,选择WLAN 之后输入 ip.src == 手机的ip地址 发现没有数据的时候不要 ...

  9. 湖南工业大学电费数据抓取(完美校园版)

    前言 之前写了一篇我们学校电费查询数据获取的博客,那篇文章的数据源是工大助手,因为工大助手对参数进行了一些加密,所以要获取到数据必须要进行破解,这样难度就增加了很多,今天我要爬的是完美校园网站的,这个 ...

最新文章

  1. 《中国人工智能学会通讯》——4.41 两种学习之间有什么区别?
  2. 机器学习 Softmax classifier (无隐含层)
  3. DevOps案例研究:知人善任——Google敏捷核心文化
  4. 00001-整数倒置-Java-leetcode-要考虑到溢出问题
  5. 天黑时间跟经度还是纬度有关_经纬度和时间有什么关系
  6. 安全系列之一:如何利用IPSec保证远程桌面的安全性!(上)
  7. 大佬带路,用Java实现天天酷跑(附源码),网友:这也太TM屌了~
  8. jquery 插件zClip实现复制到剪贴板功能
  9. AddThis AddFeed WordPress插件发布 [转]
  10. pom文件中配置repositories
  11. 软件开发项目流程 - 立项
  12. 什么是 SNMP 和 MIB什么是 SNMP 和 MIB
  13. 图模型在欺诈检测应用一点看法
  14. shell关闭占用某端口应用,并重启
  15. 【DEBUG】OMAPL138 Connect to PRSC failed
  16. php exception trace,php Exception打印error trace 实例
  17. 你和那些优秀的人差距在哪里?
  18. 如何在Windows 10桌面显示我的电脑和控制面板等系统图标
  19. 28马力轮式拖拉机最终传动及驱动轴设计(说明书+CAD图纸+文献翻译)
  20. RPM打包探索(rpm-max翻译整理)

热门文章

  1. OC 数组排序方法论
  2. python nonlocal 与 global 详解
  3. php实现websocket即时通讯
  4. python之字典相关函数及注意事项
  5. C++基础(函数重载)
  6. pyqt 在Widgets中显示图片和文字
  7. 利用python画钻石_day25 python学习 继承,钻石继承
  8. 二维码三信息码的生成(手工制作)
  9. Unity3D爆炸力
  10. java语言冒泡排序法_Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等...