【发布时间】:2013-12-05 17:22:18
【问题描述】:
我想将外部图像复制到我的本地服务器。 当 url 看起来像这样时,我知道该怎么做:www.external.com/image.jpg 但是当图像是这样的时候它是如何工作的:www.external.com/image.php?image=flower?
我的代码是这样的:
$headers = get_headers($url, 1);
$type = $headers["Content-Type"];
$types = array('image/gif' => 'gif', 'image/jpeg' => 'jpeg', 'image/png' => 'png');
if(in_array($type, $types))
{
copy($url, '../img/'.$name.'.'.$types[$type]);
}
答案:
看起来 if(in_array($type, $types)) 是问题所在。 当我移除那部分时,一切都很顺利。
只是用 file_get_contentst() 和 fwrite() 测试过。
感谢大家的建议!
【问题讨论】:
-
当您在
http://www.external.com/image.php?image=flower之类的网址上使用此代码时会发生什么? -
您是否遇到任何错误?只要返回正确的标头和二进制文件,URL 格式真的不重要。此外,您是否考虑过使用 curl 进行文件传输?
-
什么也没发生,代码不起作用,copy(..) 给出了错误。不,我还没有看过 curl,但也许它在 copy() 中?我可以为此使用其他功能吗?
-
更新:如果我使用 file_get_contents() 和 fwrite() 而不是 copy() 它也不起作用..
-
看起来 if(in_array($type, $types)) 是问题所在。当我移除那部分时,一切都很顺利。刚刚用 file_get_contentst() 和 fwrite() 测试过。谢谢大家的建议!
标签: php image url copy external