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 相关文章推荐
COM in PHP (winows only)
Oct 09 PHP
说明的比较细的php 正则学习实例
Jul 30 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
Oct 19 PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 PHP
PHP命令行脚本接收传入参数的三种方式
Aug 20 PHP
destoon出现验证码不显示时的紧急处理方法
Aug 22 PHP
PHP文件下载实例代码浅析
Aug 17 PHP
Zend Framework动作控制器用法示例
Dec 09 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
Feb 04 PHP
数组任意位置插入元素,删除特定元素的实例
Mar 02 PHP
详解php中curl返回false的解决办法
Mar 18 PHP
PHP之header函数详解
Mar 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
thinkPHP自定义类实现方法详解
2016/11/30 PHP
详解php中的implements 使用
2017/06/13 PHP
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
使用js操作cookie的一点小收获分享
2013/09/03 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
2017/03/30 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
python中使用enumerate函数遍历元素实例
2014/06/16 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
使用python实现名片管理系统
2020/06/18 Python
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
俄罗斯玩具、儿童用品、儿童服装和鞋子网上商店:MyToys.ru
2019/10/14 全球购物
旅游个人求职信范文
2014/01/30 职场文书
公司自我介绍演讲稿
2014/08/21 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
环卫工人慰问信
2015/02/15 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
Ruby处理CSV数据方法详解
2022/04/18 Ruby
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js