Class 09: File Upload & Configuration
Cấu hình NestJS với @nestjs/config
@nestjs/config
giúp quản lý biến môi trường (environment variables) và cấu hình dự án một cách linh hoạt.
Cài đặt
Tạo file .env
ở thư mục gốc dự án
.env
ở thư mục gốc dự ánCấu hình ConfigModule
trong app.module.ts
ConfigModule
trong app.module.ts
Upload file với Multer (ảnh đại diện người dùng)
NestJS tích hợp Multer để xử lý upload file multipart/form-data rất tiện lợi qua FileInterceptor
.
Cài đặt platform-express
Tạo controller xử lý upload ảnh đại diện
Xử lý lưu trữ file tạm trong thư mục static
Để truy cập được file upload từ trình duyệt, ta cần cấu hình serve thư mục public
làm static.
Cài đặt ServeStaticModule
Cấu hình ServeStaticModule
trong app.module.ts
ServeStaticModule
trong app.module.ts
Giải thích chi tiết
@nestjs/config: Đọc biến môi trường, tránh hardcode cấu hình, dễ thay đổi môi trường khác nhau.
FileInterceptor: Middleware xử lý file upload, nhận key form data
avatar
.diskStorage: Thiết lập thư mục lưu và tên file lưu.
fileFilter: Lọc file theo định dạng, đảm bảo chỉ ảnh hợp lệ được upload.
limits: Giới hạn kích thước file upload.
ServeStaticModule: Cho phép truy cập file upload qua URL, phục vụ file tĩnh.
Bài tập thực hành cho học viên
Tạo file
.env
vớiUPLOAD_DIR=./public/uploads
.Cài đặt và cấu hình
@nestjs/config
theo hướng dẫn.Tạo controller với route POST
/users/upload-avatar
để upload file ảnh đại diện.Giới hạn file upload chỉ nhận
jpg, jpeg, png
, kích thước tối đa 2MB.Lưu file vào thư mục public/uploads theo cấu hình.
Cấu hình serve static thư mục
public
để truy cập file upload qua URL.Sử dụng Postman hoặc frontend test upload file.
Kiểm tra upload thành công, trả về URL file, truy cập URL ảnh trên trình duyệt.
Thử upload file không phải ảnh hoặc quá lớn để kiểm tra lỗi.
Last updated