3

I'm wondering if there is a way I can store data like the author, in a file? Like you right click on a file in Windows, and you set properties of it. Can I read those properties in PHP ?

What I really want to do is, I want to upload images to a directory, and when I'm showing the images in the PHP page, I want to get the alt attribute directly from the jpg (or png) file's "properties".

I have tried finfo_file() function of PHP, but no success.

Thanks for any help.

4

3 回答 3

2

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

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

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

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

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

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

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

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

于 2015-06-12T12:14:46.527 回答
1

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

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

于 2013-07-29T18:34:28.277 回答
1

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

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

于 2013-07-29T18:24:19.800 回答