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 相关文章推荐
建立动态的WML站点(一)
Oct 09 PHP
PHP如何得到当前页和上一页的地址?
Nov 27 PHP
实现php加速的eAccelerator dll支持文件打包下载
Sep 30 PHP
php获取表单中多个同名input元素的值
Mar 20 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
PHP把数字转成人民币大写的函数分享
Jun 30 PHP
php中return的用法实例分析
Feb 28 PHP
利用“多说”制作留言板、评论系统
Jul 14 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
PHP开发实现微信退款功能示例
Nov 25 PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 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下一个非常全面获取图象信息的函数
2008/11/20 PHP
基于php无限分类的深入理解
2013/06/02 PHP
jQuery(1.6.3) 中css方法对浮动的实现缺陷分析
2011/09/09 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
2012/10/11 Javascript
js操作textarea 常用方法总结
2012/12/03 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
React简单介绍
2017/05/24 Javascript
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
什么是ESB?请介绍一下ESB?
2015/05/27 面试题
公司股权转让协议书
2014/04/12 职场文书
设计师求职信模板
2014/05/06 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
2015年度个人工作总结报告
2015/10/24 职场文书
商务英语邮件开头问候语
2015/11/10 职场文书
MySQL分区表实现按月份归类
2021/11/01 MySQL
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫