【问题标题】:File not found before extracting docx file提取 docx 文件之前未找到文件
【发布时间】:2014-06-02 10:39:59
【问题描述】:

我想在用户上传后提取一个 docx 我想显示内容。但似乎我不知道如何调用它.. 因为它一直显示“未找到文件”。 如果我定义它会完美显示:

$document = try.docx

所以我知道它不能调用上传的文件。这是源代码:

<?php
include 'configure.php';

if(isset($_FILES['uploaded_file'])) 
{

$document = $_FILES ['uploaded_file']['tmp_name'];// here was the issue.. tried many way but still failed

function extracttext($filename) 
{
    $ext = explode('.', $filename);
    $ext=end ($ext);
    if($ext == 'docx')
    $dataFile = "word/document.xml";
    else
    $dataFile = "content.xml";    

    $zip = new ZipArchive;

    if (true === $zip->open($filename)) 
    {

        if (($index = $zip->locateName($dataFile)) !== false) 
        {
            $text = $zip->getFromIndex($index);

            $xml = new DOMDocument;
            $xml->loadXML($text, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);

            return strip_tags($xml->saveXML());
        }

        $zip->close();
    }
    return "File not found";
}
echo extracttext($document);
}
?>

【问题讨论】:

  • 不确定是否可以使用 ZipArchive 打开像这样的临时文件。我认为您应该首先将其移动到文件系统上的真实位置,然后使用 ZipArchive 打开它。

标签: php file-upload docx text-extraction


【解决方案1】:

$_FILES['uploaded_file']['tmp_name'] 不包含文档的名称,它包含类似“/tmp/asdjashdkjashda”的内容,您必须使用:$_FILES["uploaded_file"]["name"] 才能提取扩展名。

您的代码不起作用,因为您是从“/tmp/asdjashdkjashda”中提取扩展名而不是“docx”,因此您一直在寻找$dataFile = "content.xml";(仅适用于odt 文件)。

所以,获取扩展名使用['name'],打开zip 使用['tmp_name']

$document_path = $_FILES ['uploaded_file']['tmp_name'];
$document_name=$_FILES ['uploaded_file']['name'];

function extracttext($filename,$filepath){
    $ext = explode('.', $filename);
    [...]
    if (true === $zip->open($filepath)) 
    [...]
} 
echo extracttext($document_name,$document_path);

【讨论】:

  • 或者您可以将上传的文件移动到其他文件夹:move_uploaded_file($document_path,'/path/to/other/folder/'.$document_name) 并将您的函数与新路径一起使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 2014-10-03
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 2011-06-03
相关资源
最近更新 更多