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 相关文章推荐
浅谈Windows下 PHP4.0与oracle 8的连接设置
Oct 09 PHP
PHP的ASP防火墙
Oct 09 PHP
PHP伪造referer实例代码
Sep 20 PHP
PHP备份/还原MySQL数据库的代码
Jan 06 PHP
PHP企业级应用之常见缓存技术篇
Jan 27 PHP
Linux中为php配置伪静态
Dec 17 PHP
windows平台中配置nginx+php环境
Dec 06 PHP
浅析Laravel5中队列的配置及使用
Aug 04 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
PHP实现非阻塞模式的方法分析
Jul 26 PHP
PHP获取MySQL执行sql语句的查询时间方法
Aug 21 PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 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出错界面
2006/10/09 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
php代码书写习惯优化小结
2013/06/20 PHP
PHP ADODB生成下拉列表框功能示例
2018/05/29 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
读jQuery之一(对象的组成)
2011/06/11 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
浅谈String.valueOf()方法的使用
2016/06/06 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
Python中的迭代器与生成器高级用法解析
2016/06/28 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
Django如何自定义分页
2018/09/25 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
在python里从协程返回一个值的示例
2019/02/19 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
艺术设计专业个人求职信范文
2013/12/11 职场文书
求职信结尾怎么写
2014/05/26 职场文书
大学计划书范文800字
2014/08/14 职场文书
员工离职证明范本
2015/06/12 职场文书
《吃水不忘挖井人》教学反思
2016/02/22 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书