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的特殊设置
Oct 09 PHP
PHP CURL获取返回值的方法
May 04 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 PHP
php邮件发送的两种方式
Apr 28 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
PHP实现获取并生成数据库字典的方法
May 04 PHP
PHP中大括号'{}'用法实例总结
Feb 08 PHP
Yii2 如何在modules中添加验证码的方法
Jun 19 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
laravel框架添加数据,显示数据,返回成功值的方法
Oct 11 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 无法载入mysql扩展
2010/03/12 PHP
php使用number_format函数截取小数的方法分析
2016/05/27 PHP
smarty循环嵌套用法示例分析
2016/07/19 PHP
PHP中文字符串截断无乱码解决方法
2016/10/10 PHP
jquery下将选择的checkbox的id组成字符串的方法
2010/11/28 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
JQuery EasyUI的一些常用组件
2017/07/12 jQuery
webpack配置之后端渲染详解
2017/10/26 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
JavaScript模板引擎原理与用法详解
2018/12/24 Javascript
Vue中JS动画与Velocity.js的结合使用
2019/02/13 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
django基础之数据库操作方法(详解)
2017/05/24 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
简单了解python的break、continue、pass
2019/07/08 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
2020/05/12 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
4s客服专员岗位职责
2013/12/01 职场文书
园林技术个人的自我评价
2014/01/08 职场文书
出纳员的岗位职责
2014/02/22 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
运动会加油口号
2014/06/07 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
小学生运动会广播
2015/08/19 职场文书