2016-04-22 78 views
-2

OK远程服务器中保存图像,...这是参照:Copy Image from Remote Server Over HTTP无法使用PHP

这里是我的代码:

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

我试图卷曲相同的结果。

发生的事情是文件正在创建,但所有相同的文件长度为58K,当我试图打开一个查看它时,它无法打开。实际上,它是我尝试从中保存图像的服务器的索引页面的HTML内容。

编辑1 如果我硬编码要保存的图像而不是使用变量,它会保存正确的图像。

+0

是什么'$ _SSActiveWear_BaseURL'的价值?还有一个图像的实际路径是什么? –

回答

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

OH .... TY ...这可以解释它。我是一名C#程序员,现在,我正在学习PHP。 –

1

想出了这一个。

做了以下变化:

copy($image_URL, $_SERVER['DOCUMENT_ROOT']."/tmp/" . basename($image_URL)); 

使用为什么当一个变量,在这种情况下,它的工作原理,而不是当我使用的复合语句我不明白。