【问题标题】:Copy external image to server with PHP使用 PHP 将外部图像复制到服务器
【发布时间】: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


【解决方案1】:

您如何生成$name 值。如果您从 URL 中提取它,则可能是您创建 $name 值的方式存在问题。

另外,您是否尝试过将您提供给复制命令的 URL 字符串转义?只是为了确保不是导致问题的 URL 字符串。

【讨论】:

  • 我已经在没有 $name 值的情况下进行了测试。那不是问题。没有尝试转义 url 字符串,好建议!
猜你喜欢
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
  • 2019-10-06
相关资源
最近更新 更多