如何使用原始上传文件而不使用Laravel中的.tmp文件

时间:2016-12-31 14:09:13

标签: php laravel

我想从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文件位于同一目录中,但在我的控制器中使用时却没有。

1 个答案:

答案 0 :(得分:0)

假设您的$file是UploadedFile,您可以使用getRealPath方法获取文件名的路径,

$file = $request->file('resume');
$doc_file = new DocxConversion($file->getRealPath());
echo $doc_file->convertToText();