Làm cách nào để lấy tất cả các tệp trong một thư mục trong Laravel 8?

Để 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

Làm cách nào tôi có thể lấy tất cả các tệp trong một thư mục trong PHP?

Hàm scandir[] trả về một mảng các tệp và thư mục của thư mục đã chỉ định.

Làm cách nào để tìm tệp trong thư mục trong Laravel?

Tệp cấu hình hệ thống tệp của Laravel được đặt tại config/filesystems. php .

Làm cách nào để truy cập các tệp thư mục chung trong Laravel?

Sử dụng phương thức public_path[] . Phương pháp này được sử dụng đặc biệt để truy cập các tệp từ thư mục chung.

Làm cách nào để hiển thị tệp trong Laravel?

Đĩa theo yêu cầu của Laravel . build[[ 'driver' => 'local', 'root' => '/path/to/root', ]]; . Illuminate\Support\Facades\Storage; $disk = Storage::build[[ 'driver' => 'local', 'root' => '/path/to/root', ]]; $disk->put['image. jpg', $content]; Ngoài ra, bạn có thể sử dụng tệp hoặc phương thức allFiles để lấy tệp từ thư mục khác.

Chủ Đề