Php 在提取docx文件之前找不到文件
我想在用户上传后提取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
$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)
并将您的函数用于新路径