OK,...这是指:通过 HTTP 从远程服务器复制图像
这是我的代码:
for ($i = 0; $i < count($json_post['Category']); ++$i )
{
echo $json_post['Category'][$i]['CategoryID'] . '<br />';
echo $json_post['Category'][$i]['Name'] . '<br />';
echo $json_post['Category'][$i]['Image'] . '<br />';
$image_URL = "https://$_SSActiveWear_BaseURL/" . $json_post['Category'][$i]['Image'];
echo $image_URL . "<br /><br />";
copy("https://$_SSActiveWear_BaseURL/$image_URL", $_SERVER['DOCUMENT_ROOT']."/tmp/" . basename($image_URL));
die;
}
我尝试过 cURL 并得到相同的结果。
正在发生的事情是正在创建文件,但文件长度相同,为 58k,当我尝试打开一个查看它时,它无法打开。实际上,它是我尝试保存图像的服务器的索引页的HTML内容。
编辑 1如果我对要保存的图像进行硬编码而不是使用变量,它会保存正确的图像。
想通了这个。
进行了以下更改:
copy($image_URL, $_SERVER['DOCUMENT_ROOT']."/tmp/" . basename($image_URL));
我不明白为什么在使用单个变量时,就像在这种情况下一样,它有效,而不是当我使用复合语句时。
这是因为您的网址被解释错误。始终在字符串中使用 {}
周围的变量:
copy("https://$_SSActiveWear_BaseURL/$image_URL", $_SERVER['DOCUMENT_ROOT']."/tmp/" . basename($image_URL));
转换为 copy("https://SSActiveWear_BaseUrl/_URL", ...)
。如您所见,PHP 找不到$_
和$image
变量,并为它们应用null
。
正确的语法:
copy("https://{$_SSActiveWear_BaseURL}/{$image_URL}", "{$_SERVER['DOCUMENT_ROOT']}/tmp/".basename($image_URL));