как использовать исходный загруженный файл без его использования .tmp файл в Laravel

Я хочу извлечь текст из docx и doc файла. Я использую этот класс в ответе.

Все работает отлично, когда я использую их в собственном php и docx файл в том же каталоге файлов php. Оно извлекает довольно хорошо. Это не тот случай, когда я загружаю их через <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:xampptmpphpCB7E.tmp
C:xampptmpphpCB7E
C:xampptmpphpCB7E.docx

File Not exists

Я также попытался поместить файл docx в каталог контроллеров и попытался выполнить так

public function index1(){
echo "hello";
$docObj = new DocxConversion("hello.docx");
var_dump($docText= $docObj->convertToText());
}

Вышеуказанный подход также говорит, что файл не существует. Я делаю что-то не так? Он отлично работает с одним и тем же файлом в собственном коде, где мои php-файлы и файлы docx находятся в одном каталоге, но не тогда, когда я использую его в своем контроллере.

1 ответ

  1. Предполагая, что ваш $fileявляется UploadedFile вы можете использовать getRealPathметод, чтобы получить путь к имени файла,

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