我将docx文件保存为mysql dadabase中的BLOB类型。在保存之后我试图通过获取文件的内容来查看文件的内容但是它显示了一些不可读的内容。这对于具有扩展.doc的文件很有效但我不知道为什么它不适用于.docx文件。如果有任何答案,请帮助您正确解释。
答案 0 :(得分:1)
进行查询以选择数据,然后将结果放入变量中。 使用file_put_content获取docx文件。只需要小心标题。
要阅读它,该过程与doc不同。您必须“解压缩”docx并读取其中的xml文件。您可以使用此功能:
<?php
/*Name of the document file*/
$document = 'filename.docx';
/**Function to extract text*/
function extracttext($filename) {
//Check for extension
$ext = end(explode('.', $filename));
//if its docx file
if($ext == 'docx')
$dataFile = "word/document.xml";
//else it must be odt file
else
$dataFile = "content.xml";
//Create a new ZIP archive object
$zip = new ZipArchive;
// Open the archive file
if (true === $zip->open($filename)) {
// If successful, search for the data file in the archive
if (($index = $zip->locateName($dataFile)) !== false) {
// Index found! Now read it to a string
$text = $zip->getFromIndex($index);
// Load XML from a string
// Ignore errors and warnings
$xml = DOMDocument::loadXML($text, LIBXML_NOENT | LIBXML_XINCLUDE | LIBXML_NOERROR | LIBXML_NOWARNING);
// Remove XML formatting tags and return the text
return strip_tags($xml->saveXML());
}
//Close the archive file
$zip->close();
}
// In case of failure return a message
return "File not found";
}
echo extracttext($document);
?>
(代码来源:http://www.botskool.com/geeks/how-extract-text-docx-or-odt-files-using-php)
答案 1 :(得分:0)
Docx是压缩文件类型See Tag Wiki
这就是为什么你无法从原始内容中获取文档的内容。
答案 2 :(得分:0)
我找到了这个解决方案:
"update blob_table set blob_col='LOAD_FILE('$tmp_name')";
其中$tmp_name
是您上载的文件,这是使用LOAD_FILE
函数解决这个已有6年历史的问题的答案。可能这是 mysql 的新增功能。