php中的图像下载函数,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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395031.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 文件的压缩与解压

1. tar结尾压缩命令 [roottest ~]# tar -cvf grub.tar /boot/grub/ 查看压缩包文件 [roottest ~]# tar -vtf grub.tar 解压文件 #tar -xvf grub.tar # tar -xvf grub.tar -C 解压目录 2. gz结尾压缩命令 # tar -zcvf grub.tar.gz /boot/grub gz结尾解压命令 #tar -zxvf gr…

深度学习笔记-卷积神经网络CNN与循环神经网络RNN有什么区别?

转载 https://blog.csdn.net/weixin_35227692/article/details/79223536转载于:https://www.cnblogs.com/USTBlxq/p/10445268.html

参考框架 系统 基准_带有基准的前端框架的实际比较

参考框架 系统 基准by Jacek Schae由Jacek Schae 带有基准的前端框架的实际比较 (A Real-World Comparison of Front-End Frameworks with Benchmarks) UPDATE: There is a newer version of this article更新:本文有较新的版本 A Real-World Comparison of Front…

ppt复制切片器_零基础小白自学PPT快速入门到精通(上)

零基础小白如何自学PPT快速入门到精通呢?40个保姆级小技巧助力你高效掌握PPT基础操作!PPT在学习与工作中的应用越来越广泛:在学校时免不了要做毕业答辩、毕业论文,工作中时常要进行复盘总结、工作汇报、推广方案,有时甚…

网络安全初创公司SafeBreach获1500万美元A轮融资

今天,网络安全初创公司 SafeBreach 宣布完成1500 万美元 A 轮融资,新投资者德国电信、惠普公司、 Maverick Ventures 及现有投资者 Sequoia Capital 和 Shlomo Kramer 参投。公司计划利用本轮融资加大研发力度,扩大销售及营销团队&#xff0c…

php网站分区,PHP - Manual: 分区和分片 (官方文档)

分区和分片数据库群组是由于各种各样的原因建立的,他可以提升处理能力、容忍错误,并且提升大量服务器同时工作的的性能。群组有时会组合分区和共享功能,来将大量复杂的任务分拆成更加简单的任务,更加可控的单元。插件可以支持各种…

webBroser获取cookie

//取当前webBrowser登录后的Cookie值 [DllImport("wininet.dll", CharSet CharSet.Auto, SetLastError true)]static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref int pcchCookieData, int dwFlags…

了解Linux操作系统发展阶段

一、硬件与软件发展历史 计算机由硬件和软件组成结构 二、Linux的发展史 Linux 操作系统是Unix操作系统的一种克隆系统。它诞生于1991年的10月5日(只是第一次正式向外公布的时间)。以后借助于Internet网络,并经过全世界各地计算机爱好者的共同…

c gui qt 4编程第二版_面试官问Linux下如何编译C程序,如何回答?为你编译演示

文章来源:嵌入式大杂烩 作者:ZhengNLWindows下常用IDE来编译,Linux下直接使用gcc来编译,编译过程是Linux嵌入式编程的基础,也是嵌入式高频基础面试问题。一、命令行编译及各个细分编译过程hello.c示例代码:…

Python基础-----列表、元组、集合(2)

raw_input ##字符类型input##数值类型##格式化输出注释切片s[2:5]##切片从2开始到5,不包括5[kioskfoundation39 mnt]$ pythonPython 2.7.5 (default, Oct 11 2015, 17:47:16) [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2Type "help", "copyri…

调用lambda_如何使用Lambda调用上下文动态设置超时

调用lambdaby Yan Cui崔燕 如何使用Lambda调用上下文动态设置超时 (How to set timeouts dynamically using Lambda invocation context) With API Gateway and Lambda, you’re forced to use short timeouts on the server-side:使用API​​ Gateway和Lambda,您不…

php+tp框架+API,php - tp框架能开发API接口吗

怪我咯2017-04-10 17:12:231楼TP的controller其实有很多种的HproseController,JsonRpcController,RestController,RpcController,YarController我拿RestController给你介绍一下RESTFul方法的操作方法定义主要区别在于,需要对请求类型和资源类型进行判断,…

OTL翻译(9) --常量的SQL语句

常量的SQL语句 一个没有绑定变量的SQL语句、SQL语句块或是存储过程就被称为常量的SQL语句。OTL通过一个静态的函数来执行这样的SQL语句。 例如: // static otl_cursor::direct_exec()otl_cursor::direct_exec(db, // connect object"create table test_tab(f1 …

[HNOI2016]网络 树链剖分,堆

[HNOI2016]网络 LG传送门 表示乱搞比正解难想。 整体二分很好想吧。 但是为了好写快乐,我们选择三个\(\log\)的乱搞。 先树剖,线段树套堆维护区间最大值。对于一次修改,如果是插入,就把树上除了这条链的地方加上这个重要度&#x…

python压缩文件为zip-python 压缩文件为zip后删除原文件

压缩.log 文件为zip后删除原文件 需要注意:本人作为小白,该脚本需要和.log在一起,后面有时间需要改正。 #!/usr/local/python/bin/python #-*-codingutf8 -*- import time import os import sys import zipfile N 7 #设置删除多少天前的文件…

css text-align-last设置末尾文本对齐方式

text-align-last:auto | start | end | left | right | center | justify auto: 无特殊对齐方式。 left: 内容左对齐。 center: 内容居中对齐。 right: 内容右对齐。 justify: 内容两端对齐。 start&#x…

后端开发除了编码还要做什么_每个开发人员都应掌握的基本技能(除了编码)

后端开发除了编码还要做什么Whether you are learning to code, looking for a new job, or just want to improve your skills as a developer, you need to master the essential tools of team collaboration. These are as important as knowing how to code.无论您是学习编…

Python中的defaultdict方法

字典(dictionary)是Python中一种常用的数据类型。不同于其他由数字索引的序列,字典是用"键"(key)来索引的。通常表示为dict(key: val, ...),有以下特征: 键可以是任何不可变&#xff…

git撤销commit 并保存之前的修改

撤销并保留修改 参数 –soft # 先进行commit &#xff0c;之后后悔啦$ git commit -am "对首篇报告研究员字段改为author_name"执行git log $ git logcommit 3d6788f577faba5e1d408e372031c81beee79749Author: yous <yous.com>Date: Thu Dec 14 10:08:36 2017 …

php替换中文,PHP中文替换

//定义编码header( Content-Type:text/html;charsetutf-8 );$wordsarray(我,你,他);$content"测一测我是不是违禁词";$bannedgenerateRegularExpression($words);//检查违禁词$res_bannedcheck_words($banned,$content);write_html($content,$res_banned);/*** descr…