php完美实现下载远程图片保存到本地

class DownloadImage
{
    /*
    *功能:php完美实现下载远程图片保存到本地
    *参数:文件url,保存文件目录,保存文件名称,使用的下载方式
    *当保存文件名称为空时则使用远程文件原来的名称
    */
    public static function getImage($url, $save_dir = '', $filename = '', $type = 0)
    {
        if (trim($url) == '')
        {
            return ['file_name' => '', 'save_path' => '', 'error' => 1, 'error_message' => 'url不能为空'];
        }
        $save_absolute_dir = ROOT_PATH . "/" . $save_dir;
        if (trim($filename) == '')
        {//保存文件名
            $ext = strrchr($url, '.');
            if ($ext != '.gif' && $ext != '.GIF' && $ext != '.jpg' && $ext != '.JPG' && $ext != '.jpeg' && $ext != '.JPEG' && $ext != '.png' && $ext != '.PNG')
            {
                return ['file_name' => '', 'save_path' => '', 'error' => 3, 'error_message' => '图片格式不正确'];
            }
            $filename = time() . $ext;
        }
        $last = strlen($save_absolute_dir) - 1;
        if ($save_absolute_dir[$last] !== "/")
        {
            $save_absolute_dir .= '/';
        }
        //创建保存目录
        if (!file_exists($save_absolute_dir) && !mkdir($save_absolute_dir, 0777, true))
        {
            return ['file_name' => '', 'save_path' => '', 'error' => 5, 'error_message' => '创建目录失败'];
        }
        //获取远程文件所采用的方法
        if ($type)
        {
            $ch = curl_init();
            $timeout = 5;
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
            $img = curl_exec($ch);
            curl_close($ch);
        }
        else
        {
            ob_start();
            readfile($url);
            $img = ob_get_contents();
            ob_end_clean();
        }
        //$size=strlen($img);
        //文件大小
        $fp2 = @fopen($save_absolute_dir . $filename, 'a');
        fwrite($fp2, $img);
        fclose($fp2);
        unset($img, $url);
        return ['file_name' => $filename, 'save_path' => $save_dir . '/' . $filename, 'error' => 0, 'error_message' => ''];
    }
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
守望数据采集器3.2版-可查看原文章、预览采集结果、GB和其他编码互转!^^采集论坛时只采集顶楼内容;可采集utf-8编码网站,实现gb和utf8互换;可导入phpwind、DZ、dvbbs……论坛;加入在采集内容后可加来源网站,例如在你导入论坛的每篇文章后加上“来源于:新浪网”;(可选)加强空标题空内容的过滤,节约很多采集时间,同时界面也好看点!更新论坛版块简约教程:首先点采集设置->点设置论坛参数->设置好论坛参数(fid不用写了)->然后点更新论坛版块信息即可!!!刷新下首页即可看到你的论坛版块了,以后不用再更新版块缓存,除非你论坛有改动!!DZ和PHPWIND都能自动获取版块信息,如果你论坛是仿静态,请暂时关闭此功能,等获取版块信息后再开启。。。。。交流论坛: http://www.mycjq.com适用范围:1、采集目标不限,只要能连接的页面;2、采集对象支持:文章、图片、Flash、影音等3、完美的内容入库解决方案,守望采集器提供2种入库方式:数据库直导和模拟提交。1)数据库直导方式支持任何基于Mysql数据库存储信息的内容管理系统;2)模拟提交方式理论上支持任何目标,不受目标程序语言、数据库类别限制;实际使用效果受目标应用程序影响。功能介绍:1、支持文章内容分页采集;2、支持论坛采集3、支持UTF-8转换到GB2312,可采集内容字符格式为UTF-8的目标;4、支持把文章内容保存到本地;5、支持站点+栏目管理方式,使采集管理一目了然;6、支持文章链接替换功能;7、支持采集器设置无限过滤功能;8、支持文章内图片采集保存到本地,自动替换文件名避免重复;9、支持文章内FLASH文件采集保存到本地;10、支持限制PHP FOPEN函数功能的虚拟主机;11、支持采集结果人工筛选,并提供“空标题、空内容”的快速过滤删除;12、支持PHPWIND、Discuz论坛导库,程序包内含2大论坛导库规则及操作指南说明;13、支持自定义入库间隔时间,躲避虚拟主机并发数限制。以下特殊功能仅“守望采集器”拥有:1、支持采集过程断点续采功能,不受浏览器意外关闭影响,重新启动后不会重复采集;2、支持自动对比过滤功能,对已采集的链接系统不会进行重复采集和入库;以上两条功能可大幅度减少采集时间,降低系统负载。3、采集规则嗅探器,只需要简单的鼠标复制剪贴即可生成完美的采集规则,无需烦琐的过程,即便你是新手亦能游刃有余地使用守望采集器采集任何内容!以上众多强劲功能给您免费使用,即刻安装使用体验信息采集的轻松、高效。-----------------------------选择守望采集器的好处:1、守望程序采用PHP开发支持跨平台运行,无论Windows还是Unix类操作系统都可运行,是一个高效采集、完美入库的在线应用软件。2、守望不受安装地点限制,家里、单位电脑、网站服务器都可以;推荐直接安装在网站服务器上运行,更能体会守望超强功能和方便之处。3、采用服务器安装,可将采集的图片/Flash直接抓取到本机使用;无需像其他采集器采集到个人电脑还要将数据FTP上传服务器。试想如果您当天采集图片、Flash超过100M,上传时间是个什么概念。4、采用服务器安装,可快速进行采集内容导入CMS文章系统或BBS论坛系统;若您使用非在线的采集器,远程入库或上传SQL文件来入库都会浪费时间。5、守望独有的断点续采、重复采集过滤功能,更能节约您制作内容时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZH蔚来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值