2016-12-31 52 views
0

我想從docx和doc文件中提取文本。我正在使用class這個答案。如何在不使用Laravel中的.tmp文件的情況下使用原始上傳的文件

當我在php文件的相同目錄中使用它們的原生php和docx文件時,一切正常。它提取得很好。當我通過<input type="file">上傳時,情況並非如此。您可以在鏈接中看到此課程只接受docx,doc,pptx and xlsx。我知道當你在php上傳文件時,它會重命名並移動到臨時名稱以避免名稱衝突和覆蓋。所以我帶來了類似於獲取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文件在控制器目錄中,並試圖這樣執行

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

上述方法也說文件不存在。我在這裏做錯了什麼?它與原生代碼中的相同文件完美協作,其中我的php文件和docx文件位於同一目錄中,但當我在控制器中使用它時沒有。

回答

0

假設你$file是一個UploadedFile的,你可以使用getRealPath方法來獲取路徑文件名,

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

不過它說文件不存在。 –

相關問題