25. Lưu trữ file upload (Storing uploaded file) (ok)

https://viblo.asia/p/tap-16-request-laravel-aWj534Y8K6m

Laravel cung cấp cho chúng ta một số disk lưu trữ các file upload như local, ftp, s3..., các cấu hình đó được thực hiện tại config/filesystem.php. Nhưng tại bài này mình chỉ giới thiệu về disk local thôi, các disk khác chúng ta sẽ tìm hiểu ở những tập sau.

Với disk local, các file khi upload sẽ được lưu trữ ngay trên hệ thống tại thư mục storage/app. Nếu bạn không thích thư mục mặc định này, bạn có thể thay đổi trong file cấu hình.

Để lưu trữ một file đã upload bất kỳ, ta sử dụng method store.

$request->photo->store('images');

$request->photo->store('images', 's3');

Method store này sẽ nhận hai tham số:

  • Tham số thứ nhất là path chứa file, tức là storage/app/{path}. Nếu path chưa tồn tại, Laravel sẽ tự khởi tạo thư mục cho chúng ta.

  • Tham số thứ hai (tùy chọn) sẽ là tên disk lưu trữ file, nếu không khai báo framework sẽ tự hiểu ta đang sử dụng disk local.

Sau khi thực thi method store này, nếu kiểm tra source bạn sẽ thấy các file lưu trữ đã bị đổi tên theo mã token nào đó.

Nếu bạn không muốn như thế, bạn có thể sử dụng method storeAs thay thế cho store để upload file với tên theo ý muốn.

$request->photo->storeAs('images', 'filename.jpg');

$request->photo->storeAs('images', 'filename.jpg', 's3');

Lưu ý: Hai method storestoreAs sẽ trả về path file vừa lữu trữ.

Last updated