php将远程图片保存到本地服务器的实现代码

php如何将远程图片本地化,本文分享了实现代码

//站点根目录

$cfg_basedir = dirname(__FILE__);

//停建目录属性

$cfg_dir_purview ='0755';

/*Get请求远程内容函数*/

$cookie_file = dirname(__FILE__).'/cookie.txt'; //COOKIE存放地址

function pget($url,$ref=false,$head=false){

$curl = curl_init(); // 启动一个CURL会话

curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在

curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转

if($ref){ curl_setopt($curl, CURLOPT_REFERER, $ref);//带来的Referer

}else{

curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer

}

curl_setopt($curl, CURLOPT_HTTPGET, 1); // 发送一个常规的Post请求

curl_setopt($curl, CURLOPT_COOKIEJAR, $GLOBALS['cookie_file']); // 存放Cookie信息的文件名称

curl_setopt($curl, CURLOPT_COOKIEFILE,$GLOBALS ['cookie_file']); // 读取上面所储存的Cookie信息

curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环

curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回

$tmpInfo = curl_exec($curl); // 执行操作

if (curl_errno($curl)) {

echo 'Errno'.curl_error($curl);

}

if($head){ $data['head']=curl_getinfo($curl);}

curl_close($curl); // 关键CURL会话

$data['data']=$tmpInfo;

return $data; // 返回数据

}

/**

* 创建所有目录

*

* @param string $truepath 真实地址

* @param string $mmode 模式

* @return bool

*/

if ( ! function_exists('MkdirAll'))

{

function MkdirAll($truepath)

{ global $cfg_dir_purview;

if(!file_exists($truepath))

{

mkdir($truepath, $cfg_dir_purview);

chmod($truepath, $cfg_dir_purview);

return true;

}

else

{

return true;

}

}

}

/**

* 获得文章body里的外部资源

*

* @access public

* @param string $body 文档内容

* @return string

*/

function GetCurContent($body)

{

global $cfg_multi_site,$cfg_basehost,$cfg_basedir,$cfg_image_dir,$arcID,$cuserLogin,$dsql;

$cfg_uploaddir = '/c';

$basehost = "http://".$_SERVER["HTTP_HOST"];

$img_array = array();

preg_match_all("/src=[\"|'|\s]{0,}(http:\/\/([^>]*)\.(gif|jpg|png))/isU",$body,$img_array);

$img_array = array_unique($img_array[1]);

$imgUrl = $cfg_uploaddir.'/'.date("ymd", time());

$imgPath = $cfg_basedir.$imgUrl;

if(!is_dir($imgPath.'/'))

{

MkdirAll($imgPath, $GLOBALS['cfg_dir_purview']);

CloseFtp();

}

$milliSecond = date('His',time());

foreach($img_array as $key=>$value)

{

if(preg_match("#".$basehost."#i", $value))

{

continue;

}

if(preg_match("#".$basehost."#i", $value))

{

continue;

}

if(!preg_match("#^http:\/\/#i", $value))

{

continue;

}

$http=pget($value,'$value',true);

$itype=($http['head']['content_type']);

if(!preg_match("#\.(jpg|gif|png)#i", $itype))

{

if($itype=='image/gif')

{

$itype = ".gif";

}

else if($itype=='image/png')

{

$itype = ".png";

}

else

{

$itype = '.jpg';

}

}

$milliSecondN = rand(1000,9999).rand(1000,9999);

$value = trim($value);

$rndFileName = $imgPath.'/'.$milliSecondN.'-'.$key.$itype;

$fileurl = $imgUrl.'/'.$milliSecondN.'-'.$key.$itype;

$tp = fopen($rndFileName, 'wb');

fwrite($tp, $http['data']);

fclose($tp);

if(file_exists($cfg_basedir.$fileurl))

{

$info = '';

$imginfos = GetImageSize($rndFileName, $info);

$fsize = filesize($rndFileName);

$body = str_replace($value, $fileurl, $body);

}

}

return $body;

}

//调用方式

echo GetCurContent($body);

以上就是实现远程图片本地化的全部代码,希望对大家的学习有所帮助。相关阅读:

Android如何创建桌面快捷方式

yii实现级联下拉菜单的方法

Windows 10被忽略的功能 Bing智能搜索大打折扣

Android百度地图应用之基本地图功能实现

用js代码改变单选框选中状态的简单实例

win10手机版单手式键盘使用视频教程

微软公布世界各国的Win10必备应用名单

win7系统如何关闭安全警报 win7系统安全警报的关闭方法

关于php支持分块与断点续传文件下载功能代码

浅析51个PHP处理字符串的函数

将两个div左右并列显示并实现点击标题切换内容

基于flush()不能按顺序输出时的解决办法

MySQL性能瓶颈排查定位实例详解

Win10预览版10547改进:可切换Insider账户+暂停接收会员版本

php图片本地化,PHP_php将远程图片保存到本地服务器的实现代码,php如何将远程图片本地化,本 - phpStudy...相关推荐

  1. asp自动解析网页中的图片地址,并将其保存到本地服务器

    程序实现功能:自动将远程页面的文件中的图片下载到本地. 程序代码 <% '将本文保存为 save2local.asp '测试:save2local.asp?url=http://ent.sina ...

  2. PHP 将线上的图片保存到本地服务器

    /***@describe 将远程的图片保存到本地服务器*@param $url 线上图片地址 necessary*@return*/public function getOnLineImg($url ...

  3. PHP ajax 远程下载PDF文件保存在本地服务器

    在一些时候我们想ajax方式来保存一些PDF文件,尤其是它放在远程服务器上,并且是保存在我们自己的服务器上存储,这个时候我们需要写一段程序来帮助我们完成这个工作,本文介绍了PHP 远程下载PDF文件保 ...

  4. 获取微信用户信息后如何把微信头像保存到本地服务器

    默认微信头像是一个URL地址,保存在微信的服务器上,如果授权登录后换了头像获取的头像地址就会失效,图片显示不出来体验就会比较差.解决办法就是在登录的时候把微信头像保存到本地服务器,这样就不存在这样的情 ...

  5. 使用java生成PDF并保存到本地服务器中

    使用java生成PDF并保存到本地服务器中 1.导入maven <!-- PDF工具包 --><dependency><groupId>com.itextpdf&l ...

  6. 微信语音保存到本地服务器,文件格式由amr转mp3

    最近开发的微信项目里面需要用到微信语音的功能,结合微信开发文档的网页js接口,语音可以在网页上生成并上传到微信服务器,但是微信服务器保存的时间有限,还是保存到自己的本地服务器比较稳当,这样需要把语音文 ...

  7. uniapp 生成分享图片(图片+二维码),并保存到本地相册 功能实现

    生成分享图片 使用场景 在使用电商app时,通常有个分享给好友的功能,如果想要做分销类型,发展下线,也就是你邀请的好友是你的下级的话,就需要分享时将个人信息附带进去,因此会涉及到生成分享图片. 界面 ...

  8. 微信H5页面调起相册和摄像头,实现图片上传,并上传到本地服务器

    1.config权限配置 $.ajax({url:'wx_getConfig', type:'get',dataType:'json',async:false,success:function(dat ...

  9. 腾讯云服务器linux远程登录,腾讯云服务器Linux系统使用SSH工具登录远程教程

    对于大部分网友而言,如果我们选择腾讯云服务器的时候系统用Windows,那大部分网友都会登录的,直接在我们平时使用的WIN电脑远程连接即可操作,而且对于这个可视化操作系统对于经常玩服务器的用户来说也不 ...

最新文章

  1. debian+pxe+preseed.cfg 安装配置
  2. ajax用https请求不了_Chrome滚动事件概率性Block Ajax请求
  3. 神经风格迁移(Neural Style Transfer)程序实现(Keras)
  4. linux安装libfastcommon+fastdfs+nginx
  5. http消息当中,post和get两种请求方式的区别
  6. 3500x架构_如何评价超威半导体(AMD)新发布的 锐龙(Ryzen)3500X?
  7. 从网络到分布式-负载均衡
  8. Spring 的动态数据源实现
  9. sap关于既是供应商又是客户的处理-转
  10. apache http自动跳转https_NGINX使用rewrite实现http 跳转 https
  11. CentOS7下EasyDarwin的安装搭建
  12. 语音信号处理之语音特征提取(1)机器学习的语音处理
  13. TwinCAT3 控制器PLC之间EAP通讯1-主机给多个从机发送
  14. 《Head First Java (中文第二版)》勘误
  15. kubernetes云原生纪元:共享存储-PVPVC(上)
  16. IoT企业物联网平台,从设备端到云端业务系统全链路开发实战——实践类
  17. 35个极好的高质量PSD源文件网站三
  18. linux定时发送远程邮件,实用技巧:Linux操作系统下定时发送邮件
  19. 机器学习--手写英文字母1--分类流程
  20. 「Jenkins Pipeline」- 在 Jenkinsfile 中使用共享库 @20210306

热门文章

  1. 【数据可视化进阶之路】第一节:看板搭建思维框架
  2. 本人新书 Visual C#2010开发权威指南出版-感谢大家一如既往的支持-感谢CSDN总裁蒋涛以及他率领的CSDN团队提供的支持!
  3. 没有鸿沟的世界-逐浪CMS全民族语言与国际版全面启航
  4. 法人的法定代表人怎样确定
  5. Kubernetes 触发 OOMKilled(内存杀手)如何排除故障
  6. centos6.5_firefox安装flash插件
  7. 修复HTTP头信息泄露Nginx版本信息漏洞
  8. 基于systemd添加服务自启动
  9. 基于android studio的百度地图(放大缩小搜索功能)
  10. 癸山丁向下卦(七运)