环境
$ 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