好的,......这是参考:Copy Image from Remote Server Over 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 如果我硬编码要保存的图像而不是使用变量,它会保存正确的图像。
答案 0 :(得分:1)
想出这个。
做了以下更改:
copy($image_URL, $_SERVER['DOCUMENT_ROOT']."/tmp/" . basename($image_URL));
我不明白为什么在使用单个变量时,就像在这种情况下,它可以工作,而不是在我使用复合语句时。
答案 1 :(得分:0)
这是因为您的网址被解释错误。始终在字符串中的变量周围使用{}
:
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));