我正在尝试将来自其他网站的图片复制到我的服务器,我打算使用
<?
file_put_contents($toPath, file_get_contents($fromPath));
?>
好的,但要构建$toPath
,我需要扩展文件。
我知道如果$fromPath
是一个带有文件名称的正常路径,但是如果我使用facebook之类的路径使用http://graph.facebook.com/user_id/picture?type=large
我该如何获得扩展?
谢谢大家。
答案 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类型,请使用它。