欢迎访问CMS集中营! 本站QQ交流群:292800309
设为首页  |   加入收藏  |   RSS订阅  |   网站地图
CMS仿站建站技术教程_CMS免费模板源码下载-CMS集中营

首页 |  图文教程 |  免费模板 |  PHP |  MYSQL |  DIV+CSS |  JS |  ThinkPHP |  其他 | 

当前位置:首页 > 图文教程 > PHPWIND > 正文
推荐教程
相关教程

phpwind远程图片下载参考代码

时间:2015-03-27 21:23:28   作者:烈鹰网络工作室   点击:
目前论坛的远程图片下载插件可以参考 ueditor 基本规则是正则获取地址,然后curl或者file等函数取回。 
需要设置时限set_time_limit(0); 
/** 
* 拉取远程图片 
* @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; 
   } 
   //获取请求头并检测死链 
   $heads = get_headers($imgUrl); 
   if (!(stristr($heads[0], "200") && stristr($heads[0], "OK"))) { 
       $this->stateInfo = $this->getStateInfo("ERROR_DEAD_LINK"); 
       return; 
   } 
   //格式验证(扩展名验证和Content-Type验证) 
   $fileType = strtolower(strrchr($imgUrl, '.')); 
   if (!in_array($fileType, $this->config['allowFiles']) || 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(); 
   preg_match("/[\/]([^\/]*)[\.]?[^\.\/]*$/", $imgUrl, $m); 
  
   $this->oriName = $m ? $m[1]:""; 
   $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)) { 
   if (!file_exists($dirname)) { 
       $this->createFolder($dirname); 
       $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]; 
   } 
  
}
TAGS:phpwind 图片下载