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


相关文章
|
1月前
thinkphp5.1隐藏index.php入口文件
thinkphp5.1隐藏index.php入口文件
30 0
thinkphp5.1隐藏index.php入口文件
|
1月前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
29 0
|
30天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)
【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)
56 0
|
30天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch实战演练】使用Cifar10数据集训练LeNet5网络并实现图像分类(附代码)
【PyTorch实战演练】使用Cifar10数据集训练LeNet5网络并实现图像分类(附代码)
53 0
|
7天前
|
数据采集 机器学习/深度学习 数据挖掘
网络数据处理中的NumPy应用实战
【4月更文挑战第17天】本文介绍了NumPy在网络数据处理中的应用,包括数据预处理、流量分析和模式识别。通过使用NumPy进行数据清洗、格式化和聚合,以及处理时间序列数据和计算统计指标,可以有效进行流量分析和异常检测。此外,NumPy还支持相关性分析、周期性检测和聚类分析,助力模式识别。作为强大的科学计算库,NumPy在处理日益增长的网络数据中发挥着不可或缺的作用。
|
15天前
|
PHP
php下载MP4视频
php下载MP4视频
9 0
|
30天前
|
机器学习/深度学习 算法 PyTorch
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
54 2
|
30天前
|
机器学习/深度学习 自然语言处理 PyTorch
【PyTorch实战演练】基于全连接网络构建RNN并生成人名
【PyTorch实战演练】基于全连接网络构建RNN并生成人名
23 0
|
1月前
|
存储 测试技术 C++
P2P网络下分布式文件共享场景的测试
P2P网络下分布式文件共享场景的测试
33 6
|
1月前
|
数据采集 Web App开发 数据处理
Ruby网络爬虫教程:从入门到精通下载图片
Ruby网络爬虫教程:从入门到精通下载图片

热门文章

最新文章