PHP lưu trữ các tệp đã tải lên ở đâu?

Laravel cung cấp khả năng trừu tượng hóa hệ thống tệp mạnh mẽ nhờ gói Flysystem PHP tuyệt vời của Frank de Jonge. Tích hợp Laravel Flysystem cung cấp các trình điều khiển đơn giản để làm việc với các hệ thống tệp cục bộ, SFTP và Amazon S3. Thậm chí tốt hơn, thật đơn giản để chuyển đổi giữa các tùy chọn lưu trữ này giữa máy phát triển cục bộ và máy chủ sản xuất của bạn vì API vẫn giữ nguyên cho mỗi hệ thống

Cấu hình

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

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

5. Trong tệp này, bạn có thể định cấu hình tất cả các "đĩa" hệ thống tệp của mình. Mỗi đĩa đại diện cho một trình điều khiển lưu trữ và vị trí lưu trữ cụ thể. Các cấu hình ví dụ cho từng trình điều khiển được hỗ trợ được bao gồm trong tệp cấu hình để bạn có thể sửa đổi cấu hình để phản ánh tùy chọn lưu trữ và thông tin xác thực của mình

Trình điều khiển

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

6 tương tác với các tệp được lưu trữ cục bộ trên máy chủ đang chạy ứng dụng Laravel trong khi trình điều khiển

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

7 được sử dụng để ghi vào dịch vụ lưu trữ đám mây S3 của Amazon

Lưu ý Bạn có thể định cấu hình bao nhiêu đĩa tùy thích và thậm chí có thể có nhiều đĩa sử dụng cùng một trình điều khiển

Trình điều khiển địa phương

Khi sử dụng trình điều khiển

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

6, tất cả các hoạt động của tệp đều liên quan đến thư mục

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

9 được xác định trong tệp cấu hình

composer require league/flysystem-sftp-v3 "^3.0"

0 của bạn. Theo mặc định, giá trị này được đặt thành thư mục

composer require league/flysystem-sftp-v3 "^3.0"

1. Do đó, phương pháp sau đây sẽ ghi vào

composer require league/flysystem-sftp-v3 "^3.0"

2

________số 8_______

đĩa công cộng

Đĩa

composer require league/flysystem-sftp-v3 "^3.0"

3 có trong tệp cấu hình

composer require league/flysystem-sftp-v3 "^3.0"

0 của ứng dụng của bạn dành cho các tệp sẽ được truy cập công khai. Theo mặc định, đĩa

composer require league/flysystem-sftp-v3 "^3.0"

3 sử dụng trình điều khiển

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

6 và lưu trữ các tệp của nó trong

composer require league/flysystem-sftp-v3 "^3.0"

7

Để làm cho các tệp này có thể truy cập được từ web, bạn nên tạo một liên kết tượng trưng từ

composer require league/flysystem-sftp-v3 "^3.0"

8 đến

composer require league/flysystem-sftp-v3 "^3.0"

7. Việc sử dụng quy ước thư mục này sẽ giữ các tệp có thể truy cập công khai của bạn trong một thư mục có thể dễ dàng chia sẻ qua các lần triển khai khi sử dụng các hệ thống triển khai không có thời gian ngừng hoạt động như Envoyer

Để tạo liên kết tượng trưng, ​​bạn có thể sử dụng lệnh

'host' => env('SFTP_HOST'),

// Settings for basic authentication...

'username' => env('SFTP_USERNAME'),

'password' => env('SFTP_PASSWORD'),

// Settings for SSH key based authentication with encryption password...

'privateKey' => env('SFTP_PRIVATE_KEY'),

'passphrase' => env('SFTP_PASSPHRASE'),

// Optional SFTP Settings...

// 'hostFingerprint' => env('SFTP_HOST_FINGERPRINT'),

// 'passphrase' => env('SFTP_PASSPHRASE'),

// 'port' => env('SFTP_PORT', 22),

// 'root' => env('SFTP_ROOT', ''),

0 Artisan

Khi một tệp đã được lưu trữ và liên kết tượng trưng đã được tạo, bạn có thể tạo một URL tới các tệp bằng trình trợ giúp

'host' => env('SFTP_HOST'),

// Settings for basic authentication...

'username' => env('SFTP_USERNAME'),

'password' => env('SFTP_PASSWORD'),

// Settings for SSH key based authentication with encryption password...

'privateKey' => env('SFTP_PRIVATE_KEY'),

'passphrase' => env('SFTP_PASSPHRASE'),

// Optional SFTP Settings...

// 'hostFingerprint' => env('SFTP_HOST_FINGERPRINT'),

// 'passphrase' => env('SFTP_PASSPHRASE'),

// 'port' => env('SFTP_PORT', 22),

// 'root' => env('SFTP_ROOT', ''),

1

echo asset('storage/file.txt');

Bạn có thể định cấu hình các liên kết tượng trưng bổ sung trong tệp cấu hình

composer require league/flysystem-sftp-v3 "^3.0"

0 của mình. Mỗi liên kết được định cấu hình sẽ được tạo khi bạn chạy lệnh

'host' => env('SFTP_HOST'),

// Settings for basic authentication...

'username' => env('SFTP_USERNAME'),

'password' => env('SFTP_PASSWORD'),

// Settings for SSH key based authentication with encryption password...

'privateKey' => env('SFTP_PRIVATE_KEY'),

'passphrase' => env('SFTP_PASSPHRASE'),

// Optional SFTP Settings...

// 'hostFingerprint' => env('SFTP_HOST_FINGERPRINT'),

// 'passphrase' => env('SFTP_PASSPHRASE'),

// 'port' => env('SFTP_PORT', 22),

// 'root' => env('SFTP_ROOT', ''),

0

public_path('storage') => storage_path('app/public'),

public_path('images') => storage_path('app/images'),

Điều kiện tiên quyết của trình điều khiển

Cấu hình trình điều khiển S3

Trước khi sử dụng trình điều khiển S3, bạn sẽ cần cài đặt gói Flysystem S3 thông qua trình quản lý gói Composer

composer require league/flysystem-aws-s3-v3 "^3.0"

Thông tin cấu hình trình điều khiển S3 nằm trong tệp cấu hình

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

5 của bạn. Tệp này chứa một mảng cấu hình ví dụ cho trình điều khiển S3. Bạn có thể tự do sửa đổi mảng này với thông tin đăng nhập và cấu hình S3 của riêng mình. Để thuận tiện, các biến môi trường này khớp với quy ước đặt tên mà AWS CLI sử dụng

Cấu hình trình điều khiển FTP

Trước khi sử dụng trình điều khiển FTP, bạn cần cài đặt gói Flysystem FTP thông qua trình quản lý gói Composer

composer require league/flysystem-ftp "^3.0"

Tích hợp Flysystem của Laravel hoạt động tốt với FTP; . Nếu bạn cần định cấu hình hệ thống tệp FTP, bạn có thể sử dụng ví dụ cấu hình bên dưới

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

Cấu hình trình điều khiển SFTP

Trước khi sử dụng trình điều khiển SFTP, bạn cần cài đặt gói Flysystem SFTP thông qua trình quản lý gói Composer

composer require league/flysystem-sftp-v3 "^3.0"

Tích hợp Flysystem của Laravel hoạt động tốt với SFTP; . Nếu bạn cần định cấu hình hệ thống tệp SFTP, bạn có thể sử dụng ví dụ cấu hình bên dưới

'host' => env('SFTP_HOST'),

// Settings for basic authentication...

'username' => env('SFTP_USERNAME'),

'password' => env('SFTP_PASSWORD'),

// Settings for SSH key based authentication with encryption password...

'privateKey' => env('SFTP_PRIVATE_KEY'),

'passphrase' => env('SFTP_PASSPHRASE'),

// Optional SFTP Settings...

// 'hostFingerprint' => env('SFTP_HOST_FINGERPRINT'),

// 'passphrase' => env('SFTP_PASSPHRASE'),

// 'port' => env('SFTP_PORT', 22),

// 'root' => env('SFTP_ROOT', ''),

Hệ thống tệp có phạm vi và chỉ đọc

Các đĩa có phạm vi cho phép bạn xác định một hệ thống tệp trong đó tất cả các đường dẫn được tự động thêm tiền tố vào một tiền tố đường dẫn nhất định. Trước khi tạo đĩa hệ thống tệp có phạm vi, bạn sẽ cần cài đặt gói Flysystem bổ sung thông qua trình quản lý gói Composer

composer require league/flysystem-path-prefixing "^3.0"

Bạn có thể tạo một phiên bản có phạm vi đường dẫn của bất kỳ đĩa hệ thống tệp hiện có nào bằng cách xác định một đĩa sử dụng trình điều khiển

'host' => env('SFTP_HOST'),

// Settings for basic authentication...

'username' => env('SFTP_USERNAME'),

'password' => env('SFTP_PASSWORD'),

// Settings for SSH key based authentication with encryption password...

'privateKey' => env('SFTP_PRIVATE_KEY'),

'passphrase' => env('SFTP_PASSPHRASE'),

// Optional SFTP Settings...

// 'hostFingerprint' => env('SFTP_HOST_FINGERPRINT'),

// 'passphrase' => env('SFTP_PASSPHRASE'),

// 'port' => env('SFTP_PORT', 22),

// 'root' => env('SFTP_ROOT', ''),

7. Ví dụ: bạn có thể tạo một đĩa mở rộng phạm vi đĩa

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

7 hiện tại của mình thành một tiền tố đường dẫn cụ thể, sau đó mọi thao tác tệp sử dụng đĩa được xác định phạm vi của bạn sẽ sử dụng tiền tố đã chỉ định

'prefix' => 'path/to/videos',

Đĩa "chỉ đọc" cho phép bạn tạo các đĩa hệ thống tệp không cho phép thao tác ghi. Trước khi sử dụng tùy chọn cấu hình

'host' => env('SFTP_HOST'),

// Settings for basic authentication...

'username' => env('SFTP_USERNAME'),

'password' => env('SFTP_PASSWORD'),

// Settings for SSH key based authentication with encryption password...

'privateKey' => env('SFTP_PRIVATE_KEY'),

'passphrase' => env('SFTP_PASSPHRASE'),

// Optional SFTP Settings...

// 'hostFingerprint' => env('SFTP_HOST_FINGERPRINT'),

// 'passphrase' => env('SFTP_PASSPHRASE'),

// 'port' => env('SFTP_PORT', 22),

// 'root' => env('SFTP_ROOT', ''),

9, bạn sẽ cần cài đặt gói Flysystem bổ sung thông qua trình quản lý gói Composer

echo asset('storage/file.txt');

0

Tiếp theo, bạn có thể bao gồm tùy chọn cấu hình

'host' => env('SFTP_HOST'),

// Settings for basic authentication...

'username' => env('SFTP_USERNAME'),

'password' => env('SFTP_PASSWORD'),

// Settings for SSH key based authentication with encryption password...

'privateKey' => env('SFTP_PRIVATE_KEY'),

'passphrase' => env('SFTP_PASSPHRASE'),

// Optional SFTP Settings...

// 'hostFingerprint' => env('SFTP_HOST_FINGERPRINT'),

// 'passphrase' => env('SFTP_PASSPHRASE'),

// 'port' => env('SFTP_PORT', 22),

// 'root' => env('SFTP_ROOT', ''),

9 trong một hoặc nhiều mảng cấu hình của đĩa

Hệ thống tập tin tương thích Amazon S3

Theo mặc định, tệp cấu hình

composer require league/flysystem-sftp-v3 "^3.0"

0 của ứng dụng chứa cấu hình đĩa cho đĩa

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

7. Ngoài việc sử dụng đĩa này để tương tác với Amazon S3, bạn có thể sử dụng nó để tương tác với bất kỳ dịch vụ lưu trữ tệp tương thích với S3 nào, chẳng hạn như MinIO hoặc DigitalOcean Spaces

Thông thường, sau khi cập nhật thông tin đăng nhập của đĩa để khớp với thông tin đăng nhập của dịch vụ bạn định sử dụng, bạn chỉ cần cập nhật giá trị của tùy chọn cấu hình

composer require league/flysystem-path-prefixing "^3.0"

3. Giá trị của tùy chọn này thường được xác định thông qua biến môi trường

composer require league/flysystem-path-prefixing "^3.0"

4

echo asset('storage/file.txt');

1

tối thiểu

Để tích hợp Flysystem của Laravel tạo các URL thích hợp khi sử dụng MinIO, bạn nên xác định biến môi trường

composer require league/flysystem-path-prefixing "^3.0"

5 sao cho nó khớp với URL cục bộ của ứng dụng của bạn và bao gồm tên bộ chứa trong đường dẫn URL

echo asset('storage/file.txt');

2

Cảnh báo
Tạo URL lưu trữ tạm thời thông qua phương pháp

composer require league/flysystem-path-prefixing "^3.0"

6 không được hỗ trợ khi sử dụng MinIO

Lấy phiên bản đĩa

Mặt tiền

composer require league/flysystem-path-prefixing "^3.0"

7 có thể được sử dụng để tương tác với bất kỳ đĩa nào được định cấu hình của bạn. Ví dụ: bạn có thể sử dụng phương thức

composer require league/flysystem-path-prefixing "^3.0"

8 trên mặt tiền để lưu hình đại diện trên đĩa mặc định. Nếu bạn gọi các phương thức trên mặt tiền

composer require league/flysystem-path-prefixing "^3.0"

7 mà không gọi phương thức

'prefix' => 'path/to/videos',

0 trước, thì phương thức đó sẽ tự động được chuyển vào đĩa mặc định

echo asset('storage/file.txt');

3

Nếu ứng dụng của bạn tương tác với nhiều đĩa, bạn có thể sử dụng phương pháp

'prefix' => 'path/to/videos',

0 trên mặt tiền

composer require league/flysystem-path-prefixing "^3.0"

7 để làm việc với các tệp trên một đĩa cụ thể

echo asset('storage/file.txt');

4

Đĩa theo yêu cầu

Đôi khi, bạn có thể muốn tạo một đĩa trong thời gian chạy bằng cách sử dụng một cấu hình nhất định mà không có cấu hình đó thực sự có trong tệp cấu hình

composer require league/flysystem-sftp-v3 "^3.0"

0 của ứng dụng của bạn. Để thực hiện điều này, bạn có thể truyền một mảng cấu hình cho phương thức

'prefix' => 'path/to/videos',

5 của mặt tiền

composer require league/flysystem-path-prefixing "^3.0"

7

echo asset('storage/file.txt');

5

Truy xuất tệp

Phương pháp

'prefix' => 'path/to/videos',

6 có thể được sử dụng để truy xuất nội dung của tệp. Nội dung chuỗi thô của tệp sẽ được phương thức trả về. Hãy nhớ rằng, tất cả các đường dẫn tệp phải được chỉ định tương ứng với vị trí "gốc" của đĩa

echo asset('storage/file.txt');

6

Phương pháp

'prefix' => 'path/to/videos',

7 có thể được sử dụng để xác định xem tệp có tồn tại trên đĩa không

echo asset('storage/file.txt');

7

Phương pháp

'prefix' => 'path/to/videos',

8 có thể được sử dụng để xác định xem một tệp có bị thiếu trong đĩa hay không

echo asset('storage/file.txt');

8

Tải tập tin

Phương pháp

'prefix' => 'path/to/videos',

9 có thể được sử dụng để tạo phản hồi buộc trình duyệt của người dùng tải xuống tệp tại đường dẫn đã cho. Phương thức

'prefix' => 'path/to/videos',

9 chấp nhận tên tệp làm đối số thứ hai cho phương thức, sẽ xác định tên tệp mà người dùng tải xuống tệp nhìn thấy. Cuối cùng, bạn có thể chuyển một mảng các tiêu đề HTTP làm đối số thứ ba cho phương thức

echo asset('storage/file.txt');

9

URL tệp

Bạn có thể sử dụng phương pháp

echo asset('storage/file.txt');

01 để lấy URL cho một tệp nhất định. Nếu bạn đang sử dụng trình điều khiển

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

6, trình điều khiển này thường sẽ chỉ thêm ____18_______03 vào trước đường dẫn đã cho và trả về một URL tương đối cho tệp. Nếu bạn đang sử dụng trình điều khiển

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

7, URL từ xa đủ điều kiện sẽ được trả về

public_path('storage') => storage_path('app/public'),

public_path('images') => storage_path('app/images'),

0

Khi sử dụng trình điều khiển

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

6, tất cả các tệp có thể truy cập công khai phải được đặt trong thư mục

composer require league/flysystem-sftp-v3 "^3.0"

7. Hơn nữa, bạn nên tại

composer require league/flysystem-sftp-v3 "^3.0"

8 trỏ đến thư mục

composer require league/flysystem-sftp-v3 "^3.0"

7

Cảnh báo
Khi sử dụng trình điều khiển

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

6, giá trị trả về của

echo asset('storage/file.txt');

01 không được mã hóa URL. Vì lý do này, chúng tôi khuyên bạn nên luôn lưu trữ các tệp của mình bằng các tên sẽ tạo URL hợp lệ

URL tạm thời

Sử dụng phương pháp

composer require league/flysystem-path-prefixing "^3.0"

6, bạn có thể tạo các URL tạm thời cho các tệp được lưu trữ bằng trình điều khiển

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

7. Phương pháp này chấp nhận một đường dẫn và một phiên bản

echo asset('storage/file.txt');

13 chỉ định khi nào URL sẽ hết hạn

public_path('storage') => storage_path('app/public'),

public_path('images') => storage_path('app/images'),

1

Nếu bạn cần chỉ định bổ sung, bạn có thể chuyển mảng tham số yêu cầu làm đối số thứ ba cho phương thức

composer require league/flysystem-path-prefixing "^3.0"

6

public_path('storage') => storage_path('app/public'),

public_path('images') => storage_path('app/images'),

2

Nếu bạn cần tùy chỉnh cách tạo các URL tạm thời cho một đĩa lưu trữ cụ thể, bạn có thể sử dụng phương pháp

echo asset('storage/file.txt');

15. Ví dụ: điều này có thể hữu ích nếu bạn có bộ điều khiển cho phép bạn tải xuống các tệp được lưu trữ qua đĩa thường không hỗ trợ URL tạm thời. Thông thường, phương thức này nên được gọi từ phương thức

echo asset('storage/file.txt');

16 của nhà cung cấp dịch vụ

public_path('storage') => storage_path('app/public'),

public_path('images') => storage_path('app/images'),

3

Tùy chỉnh máy chủ URL

Nếu bạn muốn xác định trước máy chủ lưu trữ cho các URL được tạo bằng cách sử dụng mặt tiền

composer require league/flysystem-path-prefixing "^3.0"

7, bạn có thể thêm tùy chọn

echo asset('storage/file.txt');

01 vào mảng cấu hình của đĩa

public_path('storage') => storage_path('app/public'),

public_path('images') => storage_path('app/images'),

4

Siêu dữ liệu tệp

Ngoài việc đọc và ghi tệp, Laravel cũng có thể cung cấp thông tin về chính tệp. Ví dụ: phương pháp

echo asset('storage/file.txt');

19 có thể được sử dụng để lấy kích thước của tệp theo byte

public_path('storage') => storage_path('app/public'),

public_path('images') => storage_path('app/images'),

5

Phương thức

echo asset('storage/file.txt');

20 trả về dấu thời gian UNIX của lần cuối cùng tệp được sửa đổi

public_path('storage') => storage_path('app/public'),

public_path('images') => storage_path('app/images'),

6

Loại MIME của một tệp nhất định có thể được lấy thông qua phương thức

echo asset('storage/file.txt');

21

public_path('storage') => storage_path('app/public'),

public_path('images') => storage_path('app/images'),

7

Đường dẫn tệp

Bạn có thể sử dụng phương pháp

echo asset('storage/file.txt');

22 để lấy đường dẫn cho một tệp nhất định. Nếu bạn đang sử dụng trình điều khiển

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

6, điều này sẽ trả về đường dẫn tuyệt đối tới tệp. Nếu bạn đang sử dụng trình điều khiển

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

7, phương thức này sẽ trả về đường dẫn tương đối tới tệp trong bộ chứa S3

public_path('storage') => storage_path('app/public'),

public_path('images') => storage_path('app/images'),

8

Lưu trữ tập tin

Phương pháp

composer require league/flysystem-path-prefixing "^3.0"

8 có thể được sử dụng để lưu trữ nội dung tệp trên đĩa. Bạn cũng có thể chuyển một PHP

echo asset('storage/file.txt');

26 cho phương thức

composer require league/flysystem-path-prefixing "^3.0"

8, phương thức này sẽ sử dụng hỗ trợ luồng cơ bản của Flysystem. Hãy nhớ rằng, tất cả các đường dẫn tệp phải được chỉ định tương ứng với vị trí "gốc" được định cấu hình cho đĩa

public_path('storage') => storage_path('app/public'),

public_path('images') => storage_path('app/images'),

9

Viết không thành công

Nếu phương thức

composer require league/flysystem-path-prefixing "^3.0"

8 (hoặc các thao tác "ghi") không thể ghi tệp vào đĩa, thì sẽ trả về

echo asset('storage/file.txt');

29

composer require league/flysystem-aws-s3-v3 "^3.0"

0

Nếu muốn, bạn có thể xác định tùy chọn

echo asset('storage/file.txt');

30 trong mảng cấu hình của đĩa hệ thống tệp của mình. Khi tùy chọn này được xác định là

echo asset('storage/file.txt');

31, các phương thức "ghi" chẳng hạn như

composer require league/flysystem-path-prefixing "^3.0"

8 sẽ đưa ra một thể hiện của

echo asset('storage/file.txt');

33 khi thao tác ghi không thành công

Chuẩn bị & Nối vào Tệp

Các phương thức

echo asset('storage/file.txt');

34 và

echo asset('storage/file.txt');

35 cho phép bạn ghi vào đầu hoặc cuối tệp

composer require league/flysystem-aws-s3-v3 "^3.0"

1

Sao chép & Di chuyển tệp

Phương pháp

echo asset('storage/file.txt');

36 có thể được sử dụng để sao chép tệp hiện có sang vị trí mới trên đĩa, trong khi phương pháp

echo asset('storage/file.txt');

37 có thể được sử dụng để đổi tên hoặc di chuyển tệp hiện có sang vị trí mới

composer require league/flysystem-aws-s3-v3 "^3.0"

2

Truyền phát tự động

Truyền tệp đến bộ lưu trữ giúp giảm đáng kể mức sử dụng bộ nhớ. Nếu bạn muốn Laravel tự động quản lý truyền trực tuyến một tệp nhất định đến vị trí lưu trữ của mình, bạn có thể sử dụng phương thức

echo asset('storage/file.txt');

38 hoặc

echo asset('storage/file.txt');

39. Phương pháp này chấp nhận phiên bản

echo asset('storage/file.txt');

40 hoặc

echo asset('storage/file.txt');

41 và sẽ tự động truyền tệp đến vị trí mong muốn của bạn

composer require league/flysystem-aws-s3-v3 "^3.0"

3

Có một vài điều quan trọng cần lưu ý về phương pháp

echo asset('storage/file.txt');

38. Lưu ý rằng chúng tôi chỉ chỉ định tên thư mục chứ không phải tên tệp. Theo mặc định, phương thức

echo asset('storage/file.txt');

38 sẽ tạo một ID duy nhất để dùng làm tên tệp. Phần mở rộng của tệp sẽ được xác định bằng cách kiểm tra loại MIME của tệp. Đường dẫn đến tệp sẽ được trả về bằng phương thức

echo asset('storage/file.txt');

38 để bạn có thể lưu trữ đường dẫn, bao gồm tên tệp đã tạo, trong cơ sở dữ liệu của mình

Các phương thức

echo asset('storage/file.txt');

38 và

echo asset('storage/file.txt');

39 cũng chấp nhận một đối số để chỉ định "mức độ hiển thị" của tệp được lưu trữ. Điều này đặc biệt hữu ích nếu bạn đang lưu trữ tệp trên ổ đĩa đám mây như Amazon S3 và muốn tệp có thể truy cập công khai thông qua các URL được tạo

composer require league/flysystem-aws-s3-v3 "^3.0"

4

Tải lên tệp

Trong các ứng dụng web, một trong những trường hợp sử dụng phổ biến nhất để lưu trữ tệp là lưu trữ các tệp do người dùng tải lên như ảnh và tài liệu. Laravel giúp dễ dàng lưu trữ các tệp đã tải lên bằng cách sử dụng phương thức

echo asset('storage/file.txt');

47 trên một phiên bản tệp đã tải lên. Gọi phương thức

echo asset('storage/file.txt');

47 với đường dẫn mà bạn muốn lưu trữ tệp đã tải lên

composer require league/flysystem-aws-s3-v3 "^3.0"

5

Có một vài điều quan trọng cần lưu ý về ví dụ này. Lưu ý rằng chúng tôi chỉ chỉ định tên thư mục, không phải tên tệp. Theo mặc định, phương thức

echo asset('storage/file.txt');

47 sẽ tạo một ID duy nhất để dùng làm tên tệp. Phần mở rộng của tệp sẽ được xác định bằng cách kiểm tra loại MIME của tệp. Đường dẫn đến tệp sẽ được trả về bằng phương thức

echo asset('storage/file.txt');

47 để bạn có thể lưu trữ đường dẫn, bao gồm tên tệp đã tạo, trong cơ sở dữ liệu của mình

Bạn cũng có thể gọi phương thức

echo asset('storage/file.txt');

38 trên mặt tiền

composer require league/flysystem-path-prefixing "^3.0"

7 để thực hiện thao tác lưu trữ tệp tương tự như ví dụ trên

composer require league/flysystem-aws-s3-v3 "^3.0"

6

Chỉ định tên tệp

Nếu bạn không muốn tên tệp được gán tự động cho tệp được lưu trữ của mình, bạn có thể sử dụng phương thức

echo asset('storage/file.txt');

53, phương thức này nhận đường dẫn, tên tệp và đĩa (tùy chọn) làm đối số của nó

composer require league/flysystem-aws-s3-v3 "^3.0"

7

Bạn cũng có thể sử dụng phương thức

echo asset('storage/file.txt');

39 trên mặt tiền

composer require league/flysystem-path-prefixing "^3.0"

7, phương thức này sẽ thực hiện thao tác lưu trữ tệp giống như ví dụ trên

composer require league/flysystem-aws-s3-v3 "^3.0"

8

Cảnh báo
Các ký tự unicode không in được và không hợp lệ sẽ tự động bị xóa khỏi đường dẫn tệp. Do đó, bạn có thể muốn làm sạch đường dẫn tệp của mình trước khi chuyển chúng sang các phương thức lưu trữ tệp của Laravel. Đường dẫn tệp được chuẩn hóa bằng phương pháp

echo asset('storage/file.txt');

56

Chỉ định một đĩa

Theo mặc định, phương thức

echo asset('storage/file.txt');

47 của tệp đã tải lên này sẽ sử dụng đĩa mặc định của bạn. Nếu bạn muốn chỉ định một đĩa khác, hãy chuyển tên đĩa làm đối số thứ hai cho phương thức

echo asset('storage/file.txt');

47

composer require league/flysystem-aws-s3-v3 "^3.0"

9

Nếu bạn đang sử dụng phương thức

echo asset('storage/file.txt');

53, bạn có thể chuyển tên đĩa làm đối số thứ ba cho phương thức

composer require league/flysystem-ftp "^3.0"

0

Thông tin tệp đã tải lên khác

Nếu bạn muốn lấy tên gốc và phần mở rộng của tệp đã tải lên, bạn có thể làm như vậy bằng cách sử dụng các phương pháp

echo asset('storage/file.txt');

60 và

echo asset('storage/file.txt');

61

composer require league/flysystem-ftp "^3.0"

1

Tuy nhiên, hãy nhớ rằng các phương thức

echo asset('storage/file.txt');

60 và

echo asset('storage/file.txt');

61 được coi là không an toàn, vì tên tệp và phần mở rộng có thể bị giả mạo bởi người dùng ác ý. Vì lý do này, bạn thường nên sử dụng các phương pháp

echo asset('storage/file.txt');

64 và

echo asset('storage/file.txt');

65 để lấy tên và phần mở rộng cho tệp tải lên nhất định

composer require league/flysystem-ftp "^3.0"

2

Hiển thị tệp

Trong tích hợp Flysystem của Laravel, "khả năng hiển thị" là sự trừu tượng hóa các quyền đối với tệp trên nhiều nền tảng. Các tệp có thể được khai báo

composer require league/flysystem-sftp-v3 "^3.0"

3 hoặc

echo asset('storage/file.txt');

67. Khi một tệp được khai báo là

composer require league/flysystem-sftp-v3 "^3.0"

3, bạn đang chỉ ra rằng tệp thường có thể truy cập được đối với những người khác. Ví dụ: khi sử dụng trình điều khiển S3, bạn có thể truy xuất URL cho tệp

composer require league/flysystem-sftp-v3 "^3.0"

3

Bạn có thể đặt chế độ hiển thị khi ghi tệp thông qua phương thức

composer require league/flysystem-path-prefixing "^3.0"

8

composer require league/flysystem-ftp "^3.0"

3

Nếu tệp đã được lưu trữ, khả năng hiển thị của tệp có thể được truy xuất và đặt thông qua các phương thức

echo asset('storage/file.txt');

71 và

echo asset('storage/file.txt');

72

composer require league/flysystem-ftp "^3.0"

4

Khi tương tác với các tệp đã tải lên, bạn có thể sử dụng các phương pháp

echo asset('storage/file.txt');

73 và

echo asset('storage/file.txt');

74 để lưu trữ tệp đã tải lên với khả năng hiển thị

composer require league/flysystem-sftp-v3 "^3.0"

3

composer require league/flysystem-ftp "^3.0"

5

Tệp cục bộ & Khả năng hiển thị

Khi sử dụng trình điều khiển

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

6,

composer require league/flysystem-sftp-v3 "^3.0"

3 chuyển thành quyền

echo asset('storage/file.txt');

78 đối với thư mục và quyền

echo asset('storage/file.txt');

79 đối với tệp. Bạn có thể sửa đổi ánh xạ quyền trong tệp cấu hình

composer require league/flysystem-sftp-v3 "^3.0"

0 của ứng dụng

composer require league/flysystem-ftp "^3.0"

6

Xóa tập tin

Phương thức

echo asset('storage/file.txt');

81 chấp nhận một tên tệp hoặc một mảng tệp để xóa

composer require league/flysystem-ftp "^3.0"

7

Nếu cần, bạn có thể chỉ định đĩa mà tệp sẽ bị xóa khỏi đó

composer require league/flysystem-ftp "^3.0"

8

thư mục

Nhận tất cả các tệp trong một thư mục

Phương thức

echo asset('storage/file.txt');

82 trả về một mảng gồm tất cả các tệp trong một thư mục nhất định. Nếu bạn muốn truy xuất danh sách tất cả các tệp trong một thư mục nhất định bao gồm tất cả các thư mục con, bạn có thể sử dụng phương thức

echo asset('storage/file.txt');

83

composer require league/flysystem-ftp "^3.0"

9

Nhận tất cả các thư mục trong một thư mục

Phương thức

echo asset('storage/file.txt');

84 trả về một mảng gồm tất cả các thư mục trong một thư mục nhất định. Ngoài ra, bạn có thể sử dụng phương pháp

echo asset('storage/file.txt');

85 để lấy danh sách tất cả các thư mục trong một thư mục nhất định và tất cả các thư mục con của nó

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

0

Tạo một thư mục

Phương thức

echo asset('storage/file.txt');

86 sẽ tạo thư mục đã cho, bao gồm mọi thư mục con cần thiết

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

1

Xóa một thư mục

Cuối cùng, phương pháp

echo asset('storage/file.txt');

87 có thể được sử dụng để xóa một thư mục và tất cả các tệp của nó

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

2

Hệ thống tập tin tùy chỉnh

Tích hợp Flysystem của Laravel cung cấp hỗ trợ cho một số "trình điều khiển" sẵn có; . Bạn có thể tạo trình điều khiển tùy chỉnh nếu bạn muốn sử dụng một trong những bộ điều hợp bổ sung này trong ứng dụng Laravel của mình

Để xác định hệ thống tệp tùy chỉnh, bạn sẽ cần bộ điều hợp Flysystem. Hãy thêm bộ điều hợp Dropbox do cộng đồng duy trì vào dự án của chúng ta

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

3

Tiếp theo, bạn có thể đăng ký trình điều khiển theo phương pháp

echo asset('storage/file.txt');

16 của một trong những nhà cung cấp dịch vụ ứng dụng của bạn. Để thực hiện điều này, bạn nên sử dụng phương pháp

echo asset('storage/file.txt');

89 của mặt tiền

composer require league/flysystem-path-prefixing "^3.0"

7

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

4

Đối số đầu tiên của phương thức

echo asset('storage/file.txt');

89 là tên của trình điều khiển và đối số thứ hai là một bao đóng nhận các biến

echo asset('storage/file.txt');

92 và

echo asset('storage/file.txt');

93. Việc đóng cửa phải trả về một thể hiện của

echo asset('storage/file.txt');

94. Biến

echo asset('storage/file.txt');

93 chứa các giá trị được xác định trong

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

5 cho đĩa đã chỉ định

Khi bạn đã tạo và đăng ký nhà cung cấp dịch vụ của tiện ích mở rộng, bạn có thể sử dụng trình điều khiển

echo asset('storage/file.txt');

97 trong tệp cấu hình

'username' => env('FTP_USERNAME'),

'password' => env('FTP_PASSWORD'),

// Optional FTP Settings...

// 'port' => env('FTP_PORT', 21),

// 'root' => env('FTP_ROOT'),

5 của mình

Các tệp đã tải lên được lưu trữ ở đâu?

Các tệp đã tải lên được lưu vào thư mục /files . Tuy nhiên, bạn sẽ không thể dễ dàng xem qua chúng vì tên được băm và phần mở rộng tệp đã bị xóa. Đảm bảo ứng dụng khách FTP của bạn chuyển các tệp không có phần mở rộng ở chế độ nhị phân và mọi thứ sẽ ổn.

Làm cách nào tôi có thể xem các tệp đã tải lên bằng PHP?

Trong PHP, chúng ta có thể truy cập tên thật của tệp mà chúng ta đang tải lên bằng từ khóa $_FILES[“file”][“name”]. The $_FILES is the by default keyword in PHP to access the details of files that we uploaded. The file refers to the name which is defined in the “index. html” form in the input of the file.

Làm cách nào để lưu tệp đã tải lên trong PHP?

Tải lên tệp PHP .
Định cấu hình "php. ini" Tập tin. Trước tiên, hãy đảm bảo rằng PHP được định cấu hình để cho phép tải tệp lên. .
Kiểm tra xem tệp đã tồn tại chưa. Bây giờ chúng ta có thể thêm một số hạn chế. .
Kích thước tệp giới hạn. Trường nhập tệp trong biểu mẫu HTML của chúng tôi ở trên được đặt tên là "fileToUpload". .
Loại tệp giới hạn. .
Hoàn thành tải lên tệp PHP Script

Làm cách nào để di chuyển tệp đã tải lên vào thư mục trong PHP?

Hàm move_uploaded_file() di chuyển tệp đã tải lên đến đích mới. Ghi chú. Chức năng này chỉ hoạt động trên các tệp được tải lên qua cơ chế tải lên HTTP POST của PHP. Ghi chú. Nếu tệp đích đã tồn tại, nó sẽ bị ghi đè.