PHP实战:guzzlehttp/guzzle下载网络文件到本地

简介: PHP实战:guzzlehttp/guzzle下载网络文件到本地

环境

$ php -v
PHP 7.1.23 

依赖

composer require "guzzlehttp/guzzle=6.5"
composer require "ramsey/uuid=3.9"

示例

<?php
require_once './vendor/autoload.php';
use GuzzleHttp\Client;
use Ramsey\Uuid\Uuid;
/**
 * 递归创建文件夹
 * @param $dir
 */
function safeMakeDir($dir)
{
    if (!file_exists($dir)) {
        mkdir($dir, 0777, true);
    }
}
/**
 * 随机获取字符串
 * @return string
 * @throws Exception
 */
function getRandomString()
{
    return Uuid::uuid4()->toString();
}
/**
 * 获取文件扩展名
 * @param $filename
 * @return mixed
 */
function getFileNameExtension($filename)
{
    return array_slice(explode('.', $filename), -1)[0];
}
/**
 * 获取文件内容
 * @param $url
 * @return string
 */
function getUrlContent($url)
{
    $client   = new Client();
    $response = $client->get($url);
    $body = $response->getBody();
    return $body->getContents();
}
/**
 * 保存到本地
 * @param $url
 * @param $dir
 * @throws Exception
 */
function saveUrlToLocalFile($url, $dir)
{
    safeMakeDir($dir);
    $ext  = getFileNameExtension($url);
    $uuid = getRandomString();
    $filename = "{$dir}/{$uuid}.{$ext}";
    $content = getUrlContent($url);
    file_put_contents($filename, $content);
}
function main()
{
    $url = 'https://cn.bing.com/th?id=OHR.WartburgCastle_ZH-CN4201605751_1920x1080.jpg&rf=LaDigue_1920x1080.jpg';
    $dir = 'temp';
    saveUrlToLocalFile($url, $dir);
}
main();

文件保存到了:

temp/113380ed-bf1b-40cf-8b19-5aefcb66fc17.jpg


相关文章
|
3月前
|
缓存 大数据 PHP
PHP性能优化实战:告别缓慢脚本
PHP性能优化实战:告别缓慢脚本
209 89
|
3月前
|
安全 PHP
PHP 8 新特性实战:提升开发效率的利器
PHP 8 新特性实战:提升开发效率的利器
172 87
|
3月前
|
SQL 缓存 大数据
PHP性能优化实战:4个立竿见影的技巧
PHP性能优化实战:4个立竿见影的技巧
189 88
|
3月前
|
安全 PHP
PHP 8 新特性实战:提升开发效率的利器
PHP 8 新特性实战:提升开发效率的利器
173 88
|
4月前
|
API PHP
PHP 8新特性:Match表达式与联合类型实战指南
PHP 8新特性:Match表达式与联合类型实战指南
|
3月前
|
安全 大数据 PHP
PHP 7+ 新特性实战指南:提升开发效率
PHP 7+ 新特性实战指南:提升开发效率
165 87
|
14天前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
7月前
|
监控 算法 安全
基于 PHP 语言深度优先搜索算法的局域网网络监控软件研究
在当下数字化时代,局域网作为企业与机构内部信息交互的核心载体,其稳定性与安全性备受关注。局域网网络监控软件随之兴起,成为保障网络正常运转的关键工具。此类软件的高效运行依托于多种数据结构与算法,本文将聚焦深度优先搜索(DFS)算法,探究其在局域网网络监控软件中的应用,并借助 PHP 语言代码示例予以详细阐释。
120 1
|
6月前
|
前端开发 API PHP
PHP网编程:guzzle的鉴权和异步操作实践。
Guzzle是一个强大且灵活的HTTP客户端库,它可以方便地发送HTTP请求,并且其对异步请求和各类鉴权方式的支持使其成为处理HTTP请求的理想工具。你需要了解和掌握Guzzle的异步操作并发请求和鉴权方式,以便在实际的开发中得心应手地处理HTTP请求。
161 13
|
7月前
|
网络协议 物联网
VB6网络通信软件上位机开发,TCP网络通信,读写数据并处理,完整源码下载
本文介绍使用VB6开发网络通信上位机客户端程序,涵盖Winsock控件的引入与使用,包括连接服务端、发送数据(如通过`Winsock1.SendData`方法)及接收数据(利用`Winsock1_DataArrival`事件)。代码实现TCP网络通信,可读写并处理16进制数据,适用于自动化和工业控制领域。提供完整源码下载,适合学习VB6网络程序开发。 下载链接:[完整源码](http://xzios.cn:86/WJGL/DownLoadDetial?Id=20)
241 12