Để lấy danh sách tất cả các tệp từ thư mục chung, bạn có thể sử dụng Mặt tiền tệp. Để làm việc với nó, bạn cần bao gồm lớp sau
use Illuminate\Support\Facades\File;
Các tệp sau có trong thư mục công cộng -
ví dụ 1
Để lấy tất cả các tệp từ thư mục chung
đầu ra
Đầu ra của đoạn mã trên là -
Array[ [0] => Symfony\Component\Finder\SplFileInfo Object[ [relativePath:Symfony\Component\Finder\SplFileInfo:private] => css [relativePathname:Symfony\Component\Finder\SplFileInfo:private] => css\test.css [pathName:SplFileInfo:private] => C:\xampp\htdocs\laraveltest\public\css\test.css [fileName:SplFileInfo:private] => test.css ] [1] => Symfony\Component\Finder\SplFileInfo Object[ [relativePath:Symfony\Component\Finder\SplFileInfo:private] => [relativePathname:Symfony\Component\Finder\SplFileInfo:private] => favicon.ico [pathName:SplFileInfo:private] => C:\xampp\htdocs\laraveltest\public\favicon.ico [fileName:SplFileInfo:private] => favicon.ico ] [2] => Symfony\Component\Finder\SplFileInfo Object[ [relativePath:Symfony\Component\Finder\SplFileInfo:private] => images [relativePathname:Symfony\Component\Finder\SplFileInfo:private] => images\flower.jpg [pathName:SplFileInfo:private] => C:\xampp\htdocs\laraveltest\public\images\flower.jpg [fileName:SplFileInfo:private] => flower.jpg ] [3] => Symfony\Component\Finder\SplFileInfo Object[ [relativePath:Symfony\Component\Finder\SplFileInfo:private] => [relativePathname:Symfony\Component\Finder\SplFileInfo:private] => index.php [pathName:SplFileInfo:private] => C:\xampp\htdocs\laraveltest\public\index.php [fileName:SplFileInfo:private] => index.php ] [4] => Symfony\Component\Finder\SplFileInfo Object[ [relativePath:Symfony\Component\Finder\SplFileInfo:private] => [relativePathname:Symfony\Component\Finder\SplFileInfo:private] => robots.txt [pathName:SplFileInfo:private] => C:\xampp\htdocs\laraveltest\public\robots.txt [fileName:SplFileInfo:private] => robots.txt ] ]
ví dụ 2
Để có được tất cả các hình ảnh từ thư mục chung
đầu ra
Đầu ra cho ở trên là như sau
Array[ [0] => Symfony\Component\Finder\SplFileInfo Object[ [relativePath:Symfony\Component\Finder\SplFileInfo:private] => [relativePathname:Symfony\Component\Finder\SplFileInfo:private] => flower.jpg [pathName:SplFileInfo:private] => C:\xampp\htdocs\laraveltest\public\images\flower.jpg [fileName:SplFileInfo:private] => flower.jpg ] ]
ví dụ 3
Để lấy tất cả các tệp CSS từ thư mục chung -
đầu ra
Đầu ra của đoạn mã trên là -
Array[ [0] => Symfony\Component\Finder\SplFileInfo Object [ [relativePath:Symfony\Component\Finder\SplFileInfo:private] => [relativePathname:Symfony\Component\Finder\SplFileInfo:private] => test.css [pathName:SplFileInfo:private] => C:\xampp\htdocs\laraveltest\public\css\test.css [fileName:SplFileInfo:private] => test.css ] ]
Ví dụ 4
Để lấy tất cả các tệp từ thư mục chung bằng phương thức scandir[] -
đầu ra
Đầu ra của đoạn mã trên là -
________số 8_______Bạn có thể muốn lấy hình ảnh từ máy chủ và xử lý chúng giống như từ hình ảnh từ dữ liệu biểu mẫu. Điều này rất hữu ích khi bạn muốn thao tác với hình ảnh khi máy chủ sử dụng bộ nhớ thấp. Xử lý tệp trong Laravel dễ dàng hơn
Trong bài viết này, chúng tôi sẽ chia sẻ cho bạn cách bạn có thể lấy hình ảnh từ thư mục chung hoặc thư mục lưu trữ trong Laravel. Giả sử bạn có ảnh hồ sơ người dùng có kích thước cụ thể và bạn muốn tạo ảnh có nhiều kích cỡ. Lớp File của Laravel được sử dụng để lấy tất cả các tệp từ thư mục cụ thể ở định dạng mảng
Có hai cách bạn có thể lấy tệp trong Laravel. Nếu bạn chỉ muốn lấy tệp từ thư mục cụ thể, thì bạn có thể sử dụng phương thức files[]
từ lớp mặt tiền File
. Hãy xem ví dụ này để bạn có thể hiểu rõ hơn
/**
* create multiple thumbnail of profile
*
* @return void
*/
public function cron[]
{
$path = public_path['images/profiles/'];
$files = \File::files[$path];
dd[$files];
}
mảng. 2 [▼
0 => Symfony\Component\Finder\SplFileInfo {#290 ▶}
1 => Symfony\Component\Finder\SplFileInfo {#289 ▶}
]
Ở cách thứ hai, nếu bạn muốn lấy tất cả các tệp bao gồm cả các tệp từ thư mục con, thì bạn có thể sử dụng phương thức allFiles[] thay vì phương thức files[]. Đây là ví dụ
/**
* create multiple thumbnail of profile
*
* @return void
*/
public function cron[]
{
$path = public_path['images/profiles/'];
$files = \File::allFiles[$path];
foreach [$files as $key => $file] {
// loop through all images...
}
}
Mặc dù chúng ta đã thảo luận về cách lấy Tệp từ thư mục bằng cách sử dụng các lớp Laravel, nhưng chúng ta cũng có thể thực hiện việc này bằng cách sử dụng PHP. Hàm PHP readdir[]
được sử dụng để lấy chi tiết tệp từ thư mục
/**
* create multiple thumbnail of profile
*
* @return void
*/
public function cron[]
{
$path = opendir[public_path['images']]; // open directory to read files
while [false !== [$entry = readdir[$path]]] { // loop through all files
if [$entry != "." && $entry != ".."] { // remove back entry from list
echo "$entry
\n";
}
}
closedir[$path];
}
Hàm scandir[] của PHP cũng làm tương tự như hàm readdir[]. Không cần gọi hàm opendir[] hoặc hàm closedir[]
/**
* Create a new controller instance.
*
* @return void
*/
public function index[]
{
$entry = scandir[public_path['images']];
foreach [$entry as $key => $value] {
if [$value != "." && $value != ".."] {
echo "$value
\n";
}
}
}
Vì vậy, bạn có thể làm tất cả những cách này để lấy danh sách tệp thư mục. Nếu bạn đang dùng Laravel và muốn đơn giản thì nên dùng File facade của Laravel