文档章节

下载远程图片到本地

 沧海野狼
发布于 2016/12/07 16:05
字数 271
阅读 5
收藏 0

/**
 * 下载远程图片到本地
 *
 * @param string $url 远程文件地址
 * @param string $filename 保存后的文件名(为空时则为随机生成的文件名,否则为原文件名)
 * @param array $fileType 允许的文件类型
 * @param string $dirName 文件保存的路径(路径其余部分根据时间系统自动生成)
 * @param int $type 远程获取文件的方式
 * @return json 返回文件名、文件的保存路径
 * @author blog.snsgou.com
 */
function download_image($url, $fileName = '', $dirName, $fileType = array('jpg', 'gif', 'png'), $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 = 30;
        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());
    $dirName = $dirName . '/' . date('Ym', time());
    if (!file_exists($dirName))
    {
        mkdir($dirName, 0777, true);
    }

    // 保存文件
    $res = fopen($dirName . '/' . $fileName, 'a');
    fwrite($res, $file);
    fclose($res);

    return array(
        'fileName' => $fileName,
        'saveDir' => $dirName
    );
}

本文转载自:http://php.lqbcms.cn/242786

共有 人打赏支持
上一篇: PHP生成随机数
下一篇: URL重定向
粉丝 1
博文 21
码字总数 1836
作品 0
东城
程序员
私信 提问
pycharm windows 远程调试 ubuntu虚拟机python 项目

如果要了解详细的PyCharm远程调试的相关信息,请查阅PyCharm 官方文档 。 本文描述如何利用PyCharm的remote interpreter(官方文档中的第一种方法),对Tensorflow进行远程调试。 以下是PyC...

hyhlinux
2016/10/29
37
0
Android 之 远程图片获取和本地缓存

概述 对于客户端——服务器端应用,从远程获取图片算是经常要用的一个功能,而图片资源往往会消耗比较大的流量,对应用来说,如果处理不好这个问题,那会让用户很崩溃,不知不觉手机流量就用...

jdroid
2012/04/02
0
0
综合技术--gitHub(4)--本地仓库与远程仓库

本篇主要讲解 1.本地仓库提交到远程仓库 2.从远程仓库下载到本地仓库 场景:前面的部分,已经完成了本地仓库的所有工作,这适合局域网内开发,不适合远程(外网)协同工作。因此,需要在外网(...

求是科技
2016/11/03
9
0
Python爬虫关于urlretrieve()函数的使用笔记

urllib 模块提供的 urlretrieve() 函数。urlretrieve() 方法直接将远程数据下载到本地。 参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。) 参数 re...

楠木楠
2016/09/19
1K
0
python urllib模块

在python中urllib模块提供上层接口,可以使用它下载读取数据,这里举个例子,把sina首页的html抓取下来显示出来.有2种方法可以实现. 1.urlopen(url, data=None, proxies=None) urlopen(url [, ...

乐晨
2013/04/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring boot中如何获取profiles环境

  实现ApplicationContextAware @Componentpublic class QiNiuPropertiesConfig implements ApplicationContextAware { /// 获取当前环境public String getActiveProfile() { ret......

writeademo
8分钟前
0
0
机器学习中的End-to-End到底是怎么回事?

简单讲就是,Input--->系统(这里指神经网络)--->Output(直接给出输入,NN神经网络就给出结果,一气喝成!!!) 借用一段对话:(http://dy.163.com/v2/article/detail/C3J6F2NJ0511AQHO....

火力全開
8分钟前
0
0
maven多个模块只编译并且只打包指定的模块

在多module的maven项目中,如果每次打包整个工程显得有些冗余和笨重。 命令:mvn clean package install -pl 模块的名称 -am

lifes77
9分钟前
0
0
eosjs中文手册【2.0】

访问地址:eosjs 2.0 中文手册 - 汇智网

汇智网教程
14分钟前
0
0
vue-cli 3 分环境打包

在vue-cli3的项目中, npm run serve时会把process.env.NODE_ENV设置为‘development’; npm run build 时会把process.env.NODE_ENV设置为‘production’; 此时只要根据process.env.NODE_...

灰白发
22分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部