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 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)续四
Apr 03 PHP
简单PHP上传图片、删除图片实现代码
May 12 PHP
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
解析yii数据库的增删查改
Jun 20 PHP
php实现分页工具类分享
Jan 09 PHP
php实现cc攻击防御和防止快速刷新页面示例
Feb 13 PHP
php动态添加url查询参数的方法
Apr 14 PHP
php使用include 和require引入文件的区别
Feb 16 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
Jul 10 PHP
laravel 解决Validator使用中出现的问题
Oct 25 PHP
PHP 超级全局变量相关总结
Jun 30 PHP
is_file和file_exists效率比较
Mar 14 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数据的三种方法
2008/06/05 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
2016/04/17 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
微信小程序 Windows2008 R2服务器配置TLS1.2方法
2016/12/05 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
JS验证码实现代码
2017/09/14 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
django项目搭建与Session使用详解
2018/10/10 Python
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
浅析python中while循环和for循环
2019/11/19 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
python开发入门——set的使用
2020/09/03 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
信息系统专业个人求职信范文
2013/12/07 职场文书
好书伴我成长演讲稿
2014/05/14 职场文书
责任担保书范文
2014/05/21 职场文书
就业推荐表导师评语
2014/12/31 职场文书
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技