PHP ziparchive 无法打开 PPSX 扩展(失败,code:9)
PHP ziparchive fails to open PPSX extension (failed, code:9)
处理来自 PPTX 扩展的文本完美无缺,但如果 PPSX 位于相同的 URL(相同的服务器和权限),代码将抛出 code:9 错误 (ER_NOENT)。有人可以帮助确定为什么 PPTX 与 PPSX 尽管它们都是相同的 openXML 标准,但它们的处理方式不同吗?如何从 PPSX 文件中提取文本?
作为参考,mime 类型是:application/vnd.openxmlformats-officedocument.presentationml.slideshow
<?php
if(isset($_POST['processFile']) && isset($_FILES["file"]["tmp_name"]))
{
$fileText = ppsx_to_text($_FILES["file"]["tmp_name"]);
}
function ppsx_to_text( $path_to_file )
{
$zip_handle = new ZipArchive();
$response = '';
if (true === $zip_handle->open($path_to_file)) // <-- fails to open / recognize PPSX as zip***
{
$slide_number = 1; //loop through slide files
$doc = new DOMDocument();
while (($xml_index = $zip_handle->locateName('ppt/slides/slide' . $slide_number . '.xml')) !== false)
{
$xml_data = $zip_handle->getFromIndex($xml_index);
$doc->loadXML($xml_data, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
$response .= strip_tags($doc->saveXML());
$slide_number++;
}
$zip_handle->close();
}
return $response;
}
?>
<form id="content_form" class="the_form" action="" method="post" enctype="multipart/form-data">
<label for="file">Choose file to upload</label>
<input type="file" id="file" name="file">
<button type="submit" value="processFile" name="processFile">Process</button>
<div><?php echo $fileText;?></div>
</form>
如果您确实有权访问服务器(假设它是 windows),请查看这些设置:
您的问题可能与 MIME 类型的配置方式和应要求提供的方式有关。如果是 Linux,请查看那些特定于平台的设置。如果您无法控制服务器,那么您唯一的选择就是像您所做的那样访问本地副本或内存副本。
处理来自 PPTX 扩展的文本完美无缺,但如果 PPSX 位于相同的 URL(相同的服务器和权限),代码将抛出 code:9 错误 (ER_NOENT)。有人可以帮助确定为什么 PPTX 与 PPSX 尽管它们都是相同的 openXML 标准,但它们的处理方式不同吗?如何从 PPSX 文件中提取文本?
作为参考,mime 类型是:application/vnd.openxmlformats-officedocument.presentationml.slideshow
<?php
if(isset($_POST['processFile']) && isset($_FILES["file"]["tmp_name"]))
{
$fileText = ppsx_to_text($_FILES["file"]["tmp_name"]);
}
function ppsx_to_text( $path_to_file )
{
$zip_handle = new ZipArchive();
$response = '';
if (true === $zip_handle->open($path_to_file)) // <-- fails to open / recognize PPSX as zip***
{
$slide_number = 1; //loop through slide files
$doc = new DOMDocument();
while (($xml_index = $zip_handle->locateName('ppt/slides/slide' . $slide_number . '.xml')) !== false)
{
$xml_data = $zip_handle->getFromIndex($xml_index);
$doc->loadXML($xml_data, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
$response .= strip_tags($doc->saveXML());
$slide_number++;
}
$zip_handle->close();
}
return $response;
}
?>
<form id="content_form" class="the_form" action="" method="post" enctype="multipart/form-data">
<label for="file">Choose file to upload</label>
<input type="file" id="file" name="file">
<button type="submit" value="processFile" name="processFile">Process</button>
<div><?php echo $fileText;?></div>
</form>
如果您确实有权访问服务器(假设它是 windows),请查看这些设置:
您的问题可能与 MIME 类型的配置方式和应要求提供的方式有关。如果是 Linux,请查看那些特定于平台的设置。如果您无法控制服务器,那么您唯一的选择就是像您所做的那样访问本地副本或内存副本。