我想从docx和doc文件中提取文本。我正在使用class答案中的那个。
当我在php文件的同一目录中的本机php和docx文件中使用它们时,一切正常。它提取得很好。当我通过<input type="file">
上传时,情况并非如此。您可以在链接中看到此类仅接受docx,doc,pptx and xlsx
。我知道当你在php上传文件时,它会重命名并移动到temp以避免名称冲突和覆盖。所以我得到的东西就像获取tmp文件并删除其扩展名并添加docx或doc。
这是我的代码
$file = $request->file('resume');
echo $file."<br>";
$withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $file);
$echo $withoutExt."<br>";
$original_file = $withoutExt.".docx"."<br>";
$echo $original_file."<br>";
$doc_file = new DocxConversion($original_file);
$echo $docText= $doc_file->convertToText();
上面的代码给出了我预期的输出,直到将.tmp
转换为.docx
,但最后说File Not exists
这是输出
C:\xampp\tmp\phpCB7E.tmp
C:\xampp\tmp\phpCB7E
C:\xampp\tmp\phpCB7E.docx
File Not exists
我还试图将一个docx文件放在controllers目录中并试图像这样执行
public function index1(){
echo "hello";
$docObj = new DocxConversion("hello.docx");
var_dump($docText= $docObj->convertToText());
}
上述方法也说文件不存在。我在这做错什么吗?它与本机代码中的相同文件完美配合,我的php文件和docx文件位于同一目录中,但在我的控制器中使用时却没有。
答案 0 :(得分:0)
假设您的$file
是UploadedFile,您可以使用getRealPath
方法获取文件名的路径,
$file = $request->file('resume');
$doc_file = new DocxConversion($file->getRealPath());
echo $doc_file->convertToText();