PHP实现的下载远程图片自定义函数分享


Posted in PHP onJanuary 28, 2015
<?php

/**

 * PHP下载远程图片到本地

 *

 * @param $url string 远程文件地址

 * @param $filename string 保存后的文件名(为空时则为随机生成的文件名,否则为原文件名)

 * @param $fileType array 允许的文件类型

 * @param $dirName string 文件保存的路径(路径其余部分根据时间系统自动生成)

 * @param $type int 远程获取文件的方式

 * @return json 返回文件名、文件的保存路径

 * @author blog.snsgou.com

 */

function getImage($url, $fileName = '', $dirName, $fileType = array('jpg', 'gif'), $type = 1)

{

 if ($url == '')

 {

  return false;

 }
 // 获取文件原文件名

 $defaultFileName = basename($url);
 // 获取文件类型

 $suffix = substr(strrchr($url, '.'), 1);

 if (!in_array($suffix, $fileType))

 {

  return false;

 }
 // 设置保存后的文件名

 $fileName = $fileName == '' ? time() . rand(0, 9) . '.' . $suffix : $defaultFileName;
 // 获取远程文件资源

 if ($type)

 {

  $ch = curl_init();

  $timeout = 15; // 超时时间

  curl_setopt($ch, CURLOPT_URL, $url);

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

  $file = curl_exec($ch);

  curl_close($ch);

 }

 else

 {

  ob_start();

  readfile($url);

  $file = ob_get_contents();

  ob_end_clean();

 }
 // 设置文件保存路径

 $dirName = $dirName . '/' . date('Y', time()) . '/' . date('m', time()) . '/' . date('d', time()) . '/';

 if (!file_exists($dirName))

 {

  mkdir($dirName, 0777, true);

 }
 // 保存文件

 $res = fopen($dirName . $fileName, 'a');

 fwrite($res, $file);

 fclose($res);
 return "{'fileName':$fileName, 'saveDir':$dirName}";

}


// 举例

// 返回:{'fileName':13668030896.jpg, 'saveDir':/www/test/img/2013/04/24/}

echo getImage('http://img.wan.renren.com/images/2013/0430/1367294093164.jpg', '', 'd:/PHP/data', array('jpg', 'gif'), 1);
PHP 相关文章推荐
PHP基础陷阱题(变量赋值)
Sep 12 PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
PHP递归删除目录几个代码实例
Apr 21 PHP
php实现的支持断点续传的文件下载类
Sep 23 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
PHP原生函数一定好吗?
Dec 08 PHP
php采集神器cURL使用方法详解
Feb 19 PHP
PHP实现的曲线统计图表示例
Nov 10 PHP
php json相关函数用法示例
Mar 28 PHP
PHP实现浏览器中直接输出图片的方法示例
Mar 14 PHP
在Laravel的Model层做数据缓存的实现
Sep 26 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 #PHP
php+mysqli使用预处理技术进行数据库查询的方法
Jan 28 #PHP
php中使用session防止用户非法登录后台的方法
Jan 27 #PHP
php中session与cookie的比较
Jan 27 #PHP
php实现session自定义会话处理器的方法
Jan 27 #PHP
php实现检查文章是否被百度收录
Jan 27 #PHP
php创建session的方法实例详解
Jan 27 #PHP
You might like
php一些公用函数的集合
2008/03/27 PHP
php连接数据库代码应用分析
2011/05/29 PHP
simplehtmldom Doc api帮助文档
2012/03/26 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
Symfony生成二维码的方法
2016/02/04 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
jquery、js操作checkbox全选反选
2014/03/12 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
jquery中live()方法和bind()方法区别分析
2016/06/23 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
jQuery基本选择器和层次选择器学习使用
2017/02/27 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
解决layui使用layui-icon出现默认图标的问题
2019/09/11 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
[01:42]DOTA2 – 虚无之灵
2019/08/25 DOTA
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
python实现微信自动回复功能
2018/04/11 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
python与pycharm有何区别
2020/07/01 Python
删除pycharm鼠标右键快捷键打开项目的操作
2021/01/16 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
北京某公司的.net笔试题
2014/03/20 面试题
2016年教师节贺卡寄语
2015/12/04 职场文书