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
封装一个PDO数据库操作类代码
Sep 09 PHP
php购物网站支付paypal使用方法
Nov 28 PHP
在smarty模板中使用PHP函数的方法
Apr 23 PHP
php下载文件源代码(强制任意文件格式下载)
May 09 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
PHP生成随机密码类分享
Jun 25 PHP
Yii 快速,安全,专业的PHP框架
Sep 03 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
详解php反序列化
Jun 10 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实现文本数据导入SQL SERVER
2015/05/17 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
JavaScript中的字符串操作详解
2013/11/12 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
nodejs之请求路由概述
2014/07/05 NodeJs
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
深入探讨javascript函数式编程
2015/10/11 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
python读写文件操作示例程序
2013/12/02 Python
简化Python的Django框架代码的一些示例
2015/04/20 Python
python获取从命令行输入数字的方法
2015/04/29 Python
Python OS模块常用函数说明
2015/05/23 Python
python实现的守护进程(Daemon)用法实例
2015/06/02 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
python3下载抖音视频的完整代码
2019/06/05 Python
解决Django中调用keras的模型出现的问题
2019/08/07 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
四风问题对照检查材料
2014/09/22 职场文书
招标授权委托书样本
2014/09/23 职场文书
开业典礼致辞
2015/07/29 职场文书
JavaScript中关于预编译、作用域链和闭包的理解
2021/03/31 Javascript
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
基于tensorflow权重文件的解读
2021/05/26 Python