无法使用 PHP 从远程服务器保存图像


Unable to save an image from a remote server using PHP

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));