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 相关文章推荐
建立文件交换功能的脚本(二)
Oct 09 PHP
php 表单数据的获取代码
Mar 10 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
php单例模式实现(对象只被创建一次)
Dec 05 PHP
ThinkPHP框架实现session跨域问题的解决方法
Jul 01 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
CodeIgniter框架验证码类库文件与用法示例
Mar 18 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
浅谈Laravel中的三种中间件的作用
Oct 13 PHP
php使用gearman进行任务分发操作实例详解
Feb 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+html5实现无刷新图片上传教程
2016/01/22 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
Angular父组件调用子组件的方法
2018/04/02 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
python实现线程池的方法
2015/06/30 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
python用什么编辑器进行项目开发
2020/06/17 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
英国电视和家用电器购物网站:rlrdistribution.co.uk
2018/11/20 全球购物
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
25道Java面试题集合
2013/05/21 面试题
店面出租协议书范本
2014/11/28 职场文书
考察邀请函范文
2015/01/31 职场文书
自主招生英文自荐信
2015/03/25 职场文书
党员反邪教心得体会
2016/01/15 职场文书
解除租赁合同协议书
2016/03/21 职场文书
Pillow图像处理库安装及使用
2022/04/12 Python