2016-03-10 86 views
0

我想上傳文件的詳細信息插入到數據庫表,我收到以下錯誤:如何文件的詳細信息保存到數據庫中Laravel 5.1

Fatal error: Call to undefined method Symfony\Component\Finder\SplFileInfo::getClientOriginalName()

我該如何獲得getClientOriginalName(),在Laravel5中的文件的getClientOriginalName()getFilename()

以下是我正在使用的代碼。

public function add() 
{ 
    $directory = public_path('xml'); 

    $files = File::allFiles($directory); 
    foreach ($files as $file) { 
    $entry = new Xmlentry(); 
    $entry->mime = $file->getClientMimeType(); 
    $entry->original_filename = $file->getClientOriginalName(); 
    $entry->filename = $file->getFilename().'.'.$extension; 
    $entry->save(); 
    } 
} 
+0

什麼DD($文件)輸出? – avip

+0

它打印'陣列:1 [ 0 => SplFileInfo {#164 -relativePath: 「」 -relativePathname: 「145629930664170.xml」 }' – jaahvicky

+0

我認爲這個問題是,這些方法是'UploadedFile'類的一部分,而不是'SplFileInfo'。但是,你可以使用這樣的東西將一個轉換成另一個:'new Symfony \ Component \ HttpFoundation \ File \ UploadedFile($ files [0] - > getFilename(),$ files [0] - > getPath());'' – avip

回答

1

我有點困惑,爲什麼你在那裏有getClientOriginalName(),因爲這是針對那些已上傳但File::allFiles()是從已經固定名稱的目錄中獲取文件的臨時文件名。

除了我上面的評論,我想補充你可以只使用SplFileInfo方法。

我冒昧地從代碼中刪除原始文件名並糾正變量$extension缺少賦值語句。

要回答你的問題:

public function add() 
{ 
    $directory = public_path('xml'); 

    $files = File::allFiles($directory); 
    foreach ($files as $file) { 
    $entry = new Xmlentry(); 
    $entry->mime = $file->getType(); 
    $entry->filename = $file->getFilename(). '.' . $file->getExtension(); 
    $entry->save(); 
    } 
} 
+0

這就是我一直在尋找。你只是最好的。 – jaahvicky

+0

很高興我能幫忙:) – avip

相關問題