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

发表评论