Tổng quan

Trình quản lý tệpCommunity Edition+

Giới thiệu

Storage engine dùng để lưu file vào dịch vụ cụ thể, bao gồm Local Storage (lưu vào ổ cứng server), cloud storage, v.v.

Trước khi sử dụng bất kỳ tính năng upload file nào, cần phải cấu hình storage engine trước. Khi cài đặt hệ thống, một Local Storage engine sẽ được tự động thêm và có thể sử dụng ngay. Bạn cũng có thể thêm engine mới hoặc chỉnh sửa các tham số của engine đã có.

Loại Storage Engine

Hiện tại NocoBase tích hợp sẵn các loại engine sau:

Khi cài đặt hệ thống, một Local Storage engine sẽ được tự động thêm và có thể sử dụng ngay. Bạn cũng có thể thêm engine mới hoặc chỉnh sửa các tham số của engine đã có.

Tham số chung

Ngoài các tham số riêng của từng loại engine, các phần dưới đây là tham số chung (lấy Local Storage làm ví dụ):

Ví dụ cấu hình storage engine file

Tiêu đề

Tên của storage engine, dùng để nhận biết bằng mắt thường.

Tên hệ thống

Tên hệ thống của storage engine, dùng để hệ thống nhận biết. Phải là duy nhất trong hệ thống. Nếu không điền, hệ thống sẽ tự động sinh ngẫu nhiên.

Tiền tố URL truy cập

Phần tiền tố địa chỉ URL có thể truy cập đến file đó, có thể là URL truy cập cơ sở của CDN, ví dụ: "https://cdn.nocobase.com/app" (không cần "/" ở cuối).

Đường dẫn

Đường dẫn tương đối được sử dụng khi lưu file, phần này cũng sẽ được tự động nối vào URL cuối cùng khi truy cập. Ví dụ: "user/avatar" (không cần "/" ở đầu và cuối).

Giới hạn kích thước file

Giới hạn kích thước khi upload file vào storage engine này, các file vượt quá kích thước cài đặt sẽ không thể upload được. Hệ thống mặc định giới hạn 20MB, có thể điều chỉnh tối đa lên 1GB.

Loại file

Có thể giới hạn loại file được upload, sử dụng cú pháp MIME để mô tả định dạng. Ví dụ: image/* đại diện cho file hình ảnh. Nhiều loại có thể được phân tách bằng dấu phẩy, ví dụ: image/*, application/pdf cho phép cả file hình ảnh và file PDF.

Storage engine mặc định

Sau khi tích chọn sẽ được đặt làm storage engine mặc định của hệ thống. Khi field attachment hoặc bảng file không chỉ định storage engine, file được upload sẽ đều được lưu vào storage engine mặc định. Storage engine mặc định không thể xóa.

Giữ file khi xóa bản ghi

Sau khi tích chọn, khi bản ghi dữ liệu của bảng attachment hoặc bảng file bị xóa, file đã upload trong storage engine vẫn được giữ lại. Mặc định không tích chọn, tức là khi xóa bản ghi sẽ xóa file trong storage engine cùng lúc.

Mẹo

Khi chọn "URL gốc", địa chỉ storage cuối cùng được ghép từ nhiều phần:

<URL truy cập cơ sở>/<đường dẫn>/<tên file><phần mở rộng>

Ví dụ: https://cdn.nocobase.com/app/user/avatar/20240529115151.png.

Khi chọn "URL NocoBase", bản ghi file trả về đường dẫn NocoBase theo định dạng /files/.... Cấu hình phía trên vẫn được sử dụng khi truy cập dịch vụ storage.

URL file và kiểm soát truy cập

Storage engine có thể trả về URL NocoBase hoặc URL gốc của dịch vụ storage. URL NocoBase được dùng mặc định. Chỉ chọn URL gốc khi một dịch vụ bên ngoài bắt buộc phải sử dụng trực tiếp địa chỉ storage.

Cấu hình này áp dụng theo từng storage engine. Sau khi lưu, cả file hiện có và file mới upload trong engine đó đều trả về URL theo định dạng đã chọn. File không bị di chuyển hoặc upload lại.

Cấu hình URL file

URL NocoBase

Bản ghi file trả về đường dẫn truy cập do NocoBase cung cấp, ví dụ:

/files/main/main/attachments/1.png

Request đến URL này trước tiên đi qua NocoBase và tuân theo quyền xem được cấu hình cho bản ghi file tương ứng. Chỉ sau khi kiểm tra quyền thành công, NocoBase mới đọc file hoặc chuyển hướng đến địa chỉ do dịch vụ storage tạo ra.

Đây là lựa chọn mặc định được khuyến nghị. Bản ghi file trả về đường dẫn NocoBase, vì vậy bên gọi không cần biết đang sử dụng Local Storage hay cloud storage.

URL gốc

Bản ghi file trả về trực tiếp địa chỉ do dịch vụ storage tạo ra, ví dụ:

https://storage.example.com/path/to/file.png

URL này không kiểm tra quyền xem của bản ghi file. Với Local Storage, đây thường là URL cũ /storage/uploads/, mặc định yêu cầu đăng nhập nhưng không kiểm tra lại từng bản ghi file. Với cloud storage, đây thường là địa chỉ Object Storage hoặc CDN có chính sách truy cập do dịch vụ đó kiểm soát.

Chỉ chọn URL gốc khi bên gọi không thể sử dụng URL NocoBase, chẳng hạn như không thể theo chuyển hướng 302 hoặc cần rõ ràng một địa chỉ Object Storage hay CDN.

Lưu ý

Sau khi chọn URL gốc, bất kỳ ai có URL hợp lệ đều có thể bỏ qua quyền của bản ghi file trong NocoBase. Với Local Storage, URL cũ vẫn chịu kiểm tra đăng nhập của /storage/uploads/; việc dùng Nginx tùy chỉnh để mở trực tiếp thư mục upload có thể bỏ qua kiểm tra này. Với cloud storage, nếu URL không có chữ ký hoặc thời hạn, hãy đảm bảo bucket và file cho phép đọc công khai.

Cho phép truy cập công khai

"Cho phép truy cập công khai" chỉ có hiệu lực khi chọn "URL NocoBase". Khi tích chọn, storage engine vẫn trả về URL NocoBase nhưng NocoBase không còn kiểm tra quyền của bản ghi file khi URL được truy cập. Bất kỳ ai có URL đều có thể truy cập file.

Tùy chọn này không thay đổi cấu hình đọc công khai của chính dịch vụ storage. Nó chỉ kiểm soát việc NocoBase có kiểm tra quyền của bản ghi file hay không.

Markdown, trang bên ngoài và dịch vụ bên thứ ba cũng có thể sử dụng URL NocoBase công khai. Khi sử dụng bên ngoài, hãy bổ sung domain NocoBase vào path do API trả về để tạo URL tuyệt đối, đồng thời bảo đảm bên gọi có thể theo chuyển hướng 302.

Hành vi của Local Storage

URL NocoBase cho Local Storage cuối cùng chuyển hướng đến /storage/uploads/. Cho phép truy cập công khai bỏ qua quyền bản ghi ở bước /files/, nhưng URL cũ vẫn yêu cầu đăng nhập theo mặc định. Để file cục bộ có thể được đọc ẩn danh, hãy đặt thêm LEGACY_LOCAL_STORAGE_PUBLIC_ACCESS=true rồi khởi động lại ứng dụng. Biến này công khai toàn bộ path cũ /storage/uploads/, không chỉ storage được chọn; hãy đánh giá tất cả file hiện có trước khi bật.

Khi dùng Nginx tùy chỉnh, cũng cần cấu hình auth_request cho /storage/uploads/. Xem Proxy ngược Nginx để biết cấu hình đầy đủ.

Cách chọn

Tình huống sử dụngURL fileCho phép truy cập công khai
File cần tuân theo quyền role và quyền dữ liệuURL NocoBaseKhông tích chọn
Markdown, trang bên ngoài hoặc dịch vụ bên thứ ba cần truy cập file công khaiURL NocoBaseTích chọn
Bên gọi không thể theo chuyển hướng 302 hoặc phải sử dụng trực tiếp địa chỉ storageURL gốcKhông áp dụng
Lưu ý

Local Storage, Amazon S3, Aliyun OSSTencent COS không tạo URL có chữ ký tạm thời. Địa chỉ gốc có thể bỏ qua quyền bản ghi file. URL Local Storage cũ vẫn yêu cầu đăng nhập theo mặc định; quyền truy cập URL gốc của cloud storage phụ thuộc cấu hình đọc công khai của dịch vụ đó.

Với hợp đồng, giấy tờ định danh, tài liệu nội bộ hoặc file không nên công khai, hãy dùng S3 Pro và tham khảo cấu hình kiểm soát truy cập riêng của nó.

Nếu bạn đang sử dụng storage engine công khai và muốn di chuyển file hiện có sang S3 Pro, hãy xem Di chuyển sang S3 Pro.