Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在提取docx文件之前找不到文件_Php_File Upload_Docx_Text Extraction - Fatal编程技术网

Php 在提取docx文件之前找不到文件

Php 在提取docx文件之前找不到文件,php,file-upload,docx,text-extraction,Php,File Upload,Docx,Text Extraction,我想在用户上传后提取docx,我想显示内容。但我似乎不知道怎么称呼它。。因为它一直显示“未找到文件”。 如果我定义以下内容,它将完美地显示: $document = try.docx 所以我知道它不能调用上传的文件。这是源代码: <?php include 'configure.php'; if(isset($_FILES['uploaded_file'])) { $document = $_FILES ['uploaded_file']['tmp_name'];// here w

我想在用户上传后提取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);
}
?>

$\u文件['uploaded\u file']['tmp\u name']
不包含文档的名称,它包含类似于“/tmp/asdjashda”的内容,您必须使用:
$\u文件[“uploaded\u file”][“name”]
才能提取扩展名

您的代码无法工作,因为您正在从“/tmp/asdjashda”提取扩展名,而不是“docx”,因此您一直在寻找
$dataFile=“content.xml”(仅适用于odt文件)

因此,要获得扩展,请使用
['name']
,要打开邮政编码,请使用
['tmp\u 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);

不确定你能用ZipArchive打开这样的临时文件。我认为您应该首先将其移动到文件系统上的真实位置,然后使用ZipArchive打开它。或者您可以将上载的文件移动到其他文件夹:
move\u uploaded\u file($document\u path,'/path/to/other/folder/')。$document\u name)
并将您的函数用于新路径