【问题标题】:How to find the extension for a file that doesn't have one如何找到没有扩展名的文件
【发布时间】:2014-04-19 11:35:18
【问题描述】:

我正在使用InkFilePicker 允许我的网站用户通过我的网站上传图像。Ink 将其上传到我的 Amazon S3 存储桶(祝福他们!)并在上传完成后返回一个 URL完成。问题是,我希望将这些图像存储在我的服务器上!

好的,我从 Ink 返回的 URL 如下所示:

https://www.filepicker.io/api/file/JNJB5DkqR8C4OAbzXh8z

是的,没有文件扩展名。 Pfft .. 我需要确定此图像的原始文件类型,以便在将其保存到服务器时为其分配文件扩展名。

但是如何?它在我的浏览器中正确显示 - 所以一定有办法!

【问题讨论】:

  • 你不应该相信文件扩展名。
  • 你可以看看Apache Tika,它可以分析几乎任何类型的文件的内容并告诉你它是什么。不过,我只在 Java 上下文中使用过它,在这种情况下,它可能是一把大锤来破解坚果。 tika.apache.org
  • @HenryW 谢谢,但是客户端信息会导致服务器消化不良,对吗?仍然需要以某种方式验证它

标签: php file-io mime-types filepicker.io


【解决方案1】:

可以使用PHPgetimagesize()函数

像这样:

$img = getimagesize('https://www.filepicker.io/api/file/JNJB5DkqR8C4OAbzXh8z');

echo $img['mime']; // image/png

如果您只想提取没有 MIME 类型的扩展名。你可以使用image_type_to_extension

echo image_type_to_extension($img[2]); // .png

【讨论】:

  • MIME 类型不是扩展。
  • 您可以在$img[2] 上使用image_type_to_extension 来获取扩展名。
  • @Barmar 我只是针对那个扩展名。已编辑
  • image/png 不是有效的扩展名,您不能在文件名中包含 /,因为它是目录分隔符。
  • @Barmar 我的意思是 extension is therepng is there :)。我不是说image/png 是一个扩展。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
  • 2013-05-07
  • 2010-11-04
  • 2012-12-24
  • 2019-07-07
  • 2021-12-13
  • 1970-01-01
相关资源
最近更新 更多