【问题标题】:How to read file properties with PHP?如何使用 PHP 读取文件属性?
【发布时间】:2013-07-29 18:21:35
【问题描述】:

我想知道是否有一种方法可以像作者一样将数据存储在文件中?就像您在 Windows 中右键单击一个文件,然后设置它的属性。我可以在 PHP 中读取这些属性吗?

我真正想做的是,我想将图像上传到一个目录,当我在 PHP 页面中显示图像时,我想直接从 jpg(或 png)中获取 alt 属性文件的“属性”。

我试过PHP的finfo_file()函数,但没有成功。

感谢您的帮助。

【问题讨论】:

  • finfo 只处理文件的 MIME 类型(例如 image/jpeg。它不会从文件中读取任意元数据。Windows 资源管理器实际上是在打开文件并告诉一些插件去提取元数据.
  • 我认为数据库是最好的解决方案……它甚至不必是 SQL 数据库,CouchDB 也可以。
  • @Fallen 是的,但我希望网站的所有者能够编辑文件,而无需了解 MySQL 或 HTML。

标签: php file properties fileinfo


【解决方案1】:

我想知道是否有一种方法可以像作者一样将数据存储在文件中?就像你在 Windows 中右键单击一个文件,然后设置它的属性

Windows 可以通过两种方式显示文件的属性。第一种方法是它是否知道文件格式并且文件格式可以包含元数据。例如 JPEG 和 Word 文档。在这两种格式中,有关文件(作者等)的元数据都包含在文件中,Windows 知道如何显示它。可以存储元数据的第二种方式是在具有 NTFS 文件系统的替代数据流 (ADS) 中。可以在 http://www.irongeek.com/i.php?page=security/altds 找到使用 ADS 的良好指南

我可以在 PHP 中读取这些属性吗?

对于文件内元数据,它取决于文件格式。 JPEG EXIF数据可以通过exif-read-data函数读取(http://php.net/manual/en/function.exif-read-data.php

我没有方便的 NTFS 分区来测试它,但我相信如果在 Windows 中运行 PHP 并访问 NTFS 文件系统,您可能能够访问 PHP 中的备用数据流。

我真正想做的是,我想将图像上传到一个目录,当我在 PHP 页面中显示图像时,我想直接从 jpg(或 png)文件的“属性”。

上面提到的exif-read-data 函数可以读取包含所需元数据的JPEG。 PNG 不保存 EXIF 数据,因此没有相应的功能(PNG 可以包含元数据,但似乎没有标准)。

如果您让用户在上传文件时包含姓名和其他数据,您可以存储这些数据并在显示图像时检索它。数据可以存储在任何地方,例如在数据库中(可能将文件名链接到数据)或文件系统中(对于名为 image1.png 的图像,您可以将作者的姓名存储在名为 image1.png.txt 的文件中)。

【讨论】:

    【解决方案2】:

    stat() 可能最接近您想要的数据。但它只提供像 uid 这样的系统级元数据。

    对于更详细的元数据,您需要自己跟踪。

    【讨论】:

      【解决方案3】:

      特别是对于图像,您可能想尝试读取图像的 exif 数据。 PHP当然有一个功能来做到这一点:

      http://php.net/manual/en/function.exif-read-data.php

      【讨论】:

      • 是的!这就是我想要的。但是我也可以将它用于 .png 文件吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 2016-09-08
      相关资源
      最近更新 更多