如何使用file_get_contents php获取图像扩展?

时间:2012-01-09 19:54:56

标签: php

我正在尝试将来自其他网站的图片复制到我的服务器,我打算使用

<? 
file_put_contents($toPath, file_get_contents($fromPath));
?>

好的,但要构建$toPath,我需要扩展文件。 我知道如果$fromPath是一个带有文件名称的正常路径,但是如果我使用facebook之类的路径使用http://graph.facebook.com/user_id/picture?type=large 我该如何获得扩展?

谢谢大家。

4 个答案:

答案 0 :(得分:8)

$size = getimagesize($fromPath);
$extension = image_type_to_extension($size[2]);

获取图像大小,抓取文件类型。

答案 1 :(得分:5)

在PHP 5.3中,您可以使用finfo_file(),请参阅PHP ref

file_put_contents($toPath, file_get_contents($fromPath));
$handle = fopen($toPath,'r');
print finfo_file($handle);

这也适用于非图像。

答案 2 :(得分:1)

这比@Kolink的答案快得多:

$extension= end(explode("/", image_type_to_mime_type(exif_imagetype($photoURL))));

答案 3 :(得分:0)

无需猜测或使用mime类型或魔术字节。 facebook图形api总是返回jpegs(有关讨论,请参阅FB Profile Pic always returned as ".jpg"?。)

但总的来说,这是智能文件类型检测的参考:http://designshack.net/articles/php-articles/smart-file-type-detection-using-php/

如果您只有一个字节流,finfo_file()就是您的朋友。

如果您有mime类型,请使用它。