通過 pathinfo() 解析遠程圖片 URL 的目錄結構,在本地創建對應目錄,然後使用 file_get_contents() 獲取圖片內容並用 file_put_contents() 保存到相同相對路徑。
<?php
$domain = 'https://www.jb51.net';
$url = '/newskin/images/v4/logo.jpg';
$pats = pathinfo($url);
$dir = '.' . $pats['dirname'] . '/';
if (!is_dir($dir)) {
@mkdirs($dir, 0777);
@fclose(fopen($dir . '/index.htm', 'w')); // 防止目錄遍歷
}
$img = file_get_contents($domain . $url);
file_put_contents('.' . $url, $img);
echo '<img src="' . $url . '">';
function mkdirs($pathname, $mode = 0755) {
is_dir(dirname($pathname)) || mkdirs(dirname($pathname), $mode);
return is_dir($pathname) || @mkdir($pathname, $mode);
}
?>
pathinfo() 返回包含 dirname, basename, extension 等鍵的數組。mkdirs() 確保多級目錄一次性創建成功。index.htm 可防止服務器開啟目錄列表洩露文件結構。