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
利用static实现表格的颜色隔行显示的代码
Sep 02 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
Nov 18 PHP
php+ajax实现仿百度查询下拉内容功能示例
Oct 20 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
Oct 22 PHP
PHP微信支付结果通知与回调策略分析
Jan 10 PHP
PHP使用Session实现上传进度功能详解
Aug 06 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
PHP数组与字符串互相转换实例
May 05 PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Mar 29 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
一个用php3编写的简单计数器
2006/10/09 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
jQuery操作cookie方法实例教程
2014/11/25 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
JavaScript编写一个贪吃蛇游戏
2017/03/09 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
使用vue实现多规格选择实例(SKU)
2019/08/23 Javascript
[01:19:34]2014 DOTA2国际邀请赛中国区预选赛 New Element VS Dream time
2014/05/22 DOTA
[17:36]VG战队纪录片
2014/08/21 DOTA
python保存字符串到文件的方法
2015/07/01 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
pandas 取出表中一列数据所有的值并转换为array类型的方法
2018/04/11 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
python aiohttp的使用详解
2019/06/20 Python
python 实现两个npy档案合并
2020/07/01 Python
python学习笔记之多进程
2020/08/06 Python
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
如何提高MySql的安全性
2014/06/19 面试题
高三语文教学反思
2014/01/15 职场文书
安全生产专项整治方案
2014/05/06 职场文书
Python基础之数据结构详解
2021/04/28 Python
用Python selenium实现淘宝抢单机器人
2021/06/18 Python