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中的extract的作用分析
Apr 09 PHP
PHP防注入安全代码
Apr 09 PHP
PHP开启gzip页面压缩实例代码
Mar 11 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
php控制文件下载速度的方法
Mar 24 PHP
php自动更新版权信息显示的方法
Jun 19 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
在Mac OS上编译安装Nginx+PHP+MariaDB开发环境的教程
Feb 23 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
Aug 01 PHP
PHP带节点操作的无限分类实现方法详解
Nov 09 PHP
php微信公众号开发之现金红包
Apr 16 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 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
php5新改动之短标记启用方法
2008/09/11 PHP
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
php利用curl抓取新浪微博内容示例
2014/04/27 PHP
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
介绍一下linux的文件系统
2012/03/20 面试题
建筑工程实习自我鉴定
2013/09/19 职场文书
语文教学感言
2014/02/06 职场文书
股权转让协议范本
2014/12/07 职场文书
文员岗位职责
2015/02/04 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
认识实习感想
2015/08/10 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
图文详解matlab原始处理图像几何变换
2021/07/09 Python