2011-07-07 228 views
5

在Windows资源管理器中,它们是一个摘要选项卡,其中包含每个文件的标题,主题,作者,类别,关键字和注释。是否有可能使用PHP读取和编辑这些数据?通过PHP访问文件属性

+1

每个文件类型的'metadata'存储不同。你想从中获取什么样的文件? – Grambot

+0

多种文件类型,包括一些专有的非标准格式。我的问题特别关注我可以通过属性菜单的摘要选项卡在Windows XP中访问的标题,主题,作者,类别,关键字和注释属性。 – James

+0

在这种情况下[这](http://stackoverflow.com/questions/6080319/where-does-windows-explorer-store-file-meta-data)可能是一个很好的起点。 – Grambot

回答

2

对于许多应用程序,您无法在Windows中使用PHP获取有意义的元数据。唯一的例外是使用PHP的组件对象模型。

参考

http://www.php.net/manual/en/intro.com.php

下面是字的例子/ EXCEL:

// for MSExcel use: 
$objOfficeApp = new COM("excel.application") or die("unable to instantiate MSExcel"); 
// for MSWord use: 
//$objOfficeApp = new COM("word.application") or die("unable to instantiate MSWord"); 

$objOfficeApp->Workbooks->Open("c:\\temp\\test.xls"); 
//$objOfficeApp->Documents->Open("c:\\temp\\test.doc"); 

$objDocProps = $objOfficeApp->ActiveWorkBook->BuiltInDocumentProperties(); 
//$objDocProps = $objOfficeApp->ActiveDocument->BuiltInDocumentProperties(); 

$count = $objDocProps->count(); 

while($objDocProp = $objDocProps->Next()) { 
    print $objDocProp->Name() . ': ' . $objDocProp->Value() . "\n"; 
} 

unset($objDocProp); 
unset($objDocProps); 

$objOfficeApp->ActiveWorkBook->Close(); 
//$objOfficeApp->ActiveDocument->Close(); 
$objOfficeApp->Quit(); 
unset($objOfficeApp); 
+0

谢谢。这似乎工作。 – James