php获取图片二进制流保存到本地
文章描述:
php获取文件二进制流并且保存到指定目录
现在有两台服务器,分别是A服务器、B服务器,A服务器获取B服务器上面的图片并且保存到A服务器下,B服务器返回图片二进制流。
B服务器
这里我们用本地localhost:10005作为B服务器
file_get_contents()
把整个文件读入一个字符串中。
<?php
$image_path = "data/images/20230821.jpg";
$image_data = @file_get_contents($image_path);
$rows = base64_encode($image_data);
echo json_encode($rows);
A服务器
file_put_contents() 函数把一个字符串写入文件中
<?php
$url = "http://localhost:10005/";
$output = http_curl_get($url);
$json = utf8_encode($output);
$base_img = json_decode($json,true);
$dir = "company/";
if (!file_exists($dir)) {
mkdir($dir, 0777, true);
echo "目录 $dir 创建成功!";
} else {
echo "目录 $dir 已存在!";
}
$prefix = "";//前缀可不写
$output_file = $prefix.time().rand(100,999).'.jpg';
$path = $dir.$output_file;
// 创建将数据流文件写入我们创建的文件内容中
try {
$baseImg = base64_decode($base_img);
@file_put_contents($path,$baseImg);
var_dump($path);
} catch (\Exception $e) {
var_dump($e);
}
// Curl请求方法
function http_curl_get($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
结果:
linux如果目录不存在侧创建操作如下:
<?php
$dir = "/path/to/directory";
if (!file_exists($dir)) {
mkdir($dir, 0755, true); // 在 Linux 中创建目录,并设置权限
echo "Directory created successfully";
} else {
echo "Directory already exists";
}
发布时间:2023/08/21
发表评论