方法 1:使用 file_get_contents(简单场景)
<?php
$imageUrl = 'http://106.54.214.101:8188/appraisal_cloud/tools/getImg.do?url=MTc2ODE4MDkyMzc4M1w0NjMyLmpwZw==';
$savePath = __DIR__ . '/saved_image.jpg'; // 本地保存路径
// 尝试获取图片内容
$imageData = @file_get_contents($imageUrl);
if ($imageData !== false) {
// 写入文件
$result = file_put_contents($savePath, $imageData);
if ($result !== false) {
echo "图片保存成功!路径:{$savePath}";
} else {
echo "保存失败:无法写入文件";
}
} else {
echo "获取图片失败:请检查 URL 是否有效或服务器是否允许远程访问";
}
?>
方法 2:使用 cURL(更稳定,支持复杂请求)
<?php
function saveImageByCurl($url, $savePath) {
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_BINARYTRANSFER => true,
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_FOLLOWLOCATION => true, // 跟随重定向
CURLOPT_MAXREDIRS => 5,
CURLOPT_SSL_VERIFYPEER => false, // 非 HTTPS 可关闭验证
CURLOPT_SSL_VERIFYHOST => false
]);
$imageData = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch) || $httpCode != 200) {
curl_close($ch);
return false;
}
curl_close($ch);
// 创建目录(如果不存在)
$dir = dirname($savePath);
if (!is_dir($dir)) {
mkdir($dir, 0777, true);
}
return file_put_contents($savePath, $imageData) !== false;
}
// 使用示例
$imageUrl = 'http://106.54.214.101:8188/appraisal_cloud/tools/getImg.do?url=MTc2ODE4MDkyMzc4M1w0NjMyLmpwZw==';
$savePath = __DIR__ . '/images/' . basename(parse_url($imageUrl, PHP_URL_PATH));
if (saveImageByCurl($imageUrl, $savePath)) {
echo "图片已保存至:{$savePath}";
} else {
echo "保存失败,可能原因:URL 无效、服务器拦截或图片不存在";
}
?>
链接有效性:若链接需登录/鉴权,需在代码中添加 Cookie 或 Header(如 CURLOPT_COOKIE、CURLOPT_HTTPHEADER)。
服务器配置:
确保 PHP 开启 allow_url_fopen(方法1需要)。
安装 cURL 扩展(方法2推荐)。
文件路径:保存目录需有 写入权限(Linux 服务器可执行 chmod 755 目录名)。
错误处理:建议添加日志记录(如 error_log),便于排查失败原因。
Copyright 2026 荣飞网 All Rights Reserved 苏ICP备17039739号-1