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编写PDF文档生成器
Oct 09 PHP
PHP下MAIL的另一解决方案
Oct 09 PHP
一些PHP写的小东西
Dec 06 PHP
E路文章系统PHP
Dec 11 PHP
PHP JSON 数据解析代码
May 26 PHP
PHP 八种基本的数据类型小结
Jun 01 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
有道搜索和IP138的IP的API接口(PHP应用)
Nov 29 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
php实现微信企业转账功能
Oct 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
如何给phpadmin一个保护
2006/10/09 PHP
Laravel框架实现redis集群的方法分析
2017/09/14 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
php 将json格式数据转换成数组的方法
2018/08/21 PHP
javascript中创建对象的几种方法总结
2013/11/01 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
javascript实现切换td中的值
2014/12/05 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
浅谈Node异步编程的机制
2017/10/18 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
详解vue-cli 本地开发mock数据使用方法
2018/05/29 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
使用python分析git log日志示例
2014/02/27 Python
python传递参数方式小结
2015/04/17 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
python浪漫表白源码
2019/04/05 Python
python设置随机种子实例讲解
2019/09/12 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
竞选文艺委员演讲稿
2014/04/28 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
数控机床专业自荐信
2014/05/19 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
2014年平安夜寄语
2014/12/08 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android
SQL Server使用导出向导功能
2022/04/08 SQL Server
分析SQL窗口函数之取值窗口函数
2022/04/21 Oracle