2015-05-26 32 views
2

我的laravel應用程序成功上傳並將我的文件存儲在我想要的位置。但是,我不想將該文件的公共URL存儲在數據庫中,而是將它們動態存儲(它們存儲在我的public目錄中)並顯示上載鏈接的列表。Laravel - 從字符串路徑獲取文件實例

如何從僅由File::files(public_path() . "/files/uploads");返回的字符串檢索File對象,以便獲取名稱,大小,修改日期等?

在此先感謝您的幫助!

回答

2
foreach (File::allFiles($directory) as $file) 
{ 
    /* $file should be a Symfony\Component\Finder\SplFileInfo object */ 
    $file->getSize(); 
    $file->getFilename(); 
    $file->getType(); 
} 

Documentation for the SplFileInfo。 (感謝@Bogdan!)

+0

不幸的是,File :: get()返回文件的物理內容,而不是文件路徑中的文件對象。 –

+0

啊。我玩Laravel的File類已經過去了幾個月。 –

+0

File :: allFiles()返回文件絕對路徑的字符串數組,而不是SplFileInfo實例。 –

2

你可以做到以下幾點:

foreach (File::files(public_path() . '/fonts') as $path) 
{ 
    File::size($path);   // file size 
    File::name($path);   // file name (no extension) 
    File::extension($path); // file extension 
    File::mimeType($path);  // file mime type 
    File::lastModified($path); // file last modified timestamp 
    // and so on... 
} 

你可以看到Illuminate\Filesystem\Filesystem類API中所有可用的方法。

+1

Laravel有沒有辦法返回一個File實例對象並執行'$ file-> size()'之類的操作?我認爲這就是OP所要求的。 –

+0

這很好用,儘管有比手動調用這些方法和每次傳遞字符串更好的方法。是否有更簡單的方法來初始化存儲該信息的文件對象(而不是手動構建數組/對象)? –

+1

@ nivixzixer的答案實際上使用對象實例而不是Laravel的靜態外觀,所以這是解決您的問題的更好方法。 – Bogdan

相關問題