HTTP API
Việc upload file của field attachment và file collection đều hỗ trợ xử lý thông qua HTTP API. Tùy theo storage engine được sử dụng bởi attachment hoặc file collection, có các cách gọi khác nhau.
Upload phía server
Đối với các open-source storage engine được tích hợp sẵn trong dự án như S3, OSS, COS, HTTP API gọi giống với chức năng upload trên giao diện người dùng, file đều được upload qua server. Khi gọi API cần truyền JWT token dựa trên login của user thông qua header Authorization, nếu không sẽ bị từ chối truy cập.
Field Attachment
Thông qua việc gọi action create trên resource bảng attachments (attachments), gửi request dạng POST, và upload nội dung binary thông qua field file. Sau khi gọi, file sẽ được upload vào storage engine mặc định.
Nếu cần upload file vào storage engine khác, có thể chỉ định storage engine đã được cấu hình trong field của Collection thuộc về thông qua tham số attachmentField (nếu chưa cấu hình, sẽ upload vào storage engine mặc định).
File Collection
Việc upload vào file collection sẽ tự động sinh bản ghi file, thông qua việc gọi action create trên resource file collection, gửi request dạng POST, và upload nội dung binary thông qua field file.
Việc upload vào file collection không cần chỉ định storage engine, file sẽ được upload vào storage engine được cấu hình của bảng đó.
Upload phía client
Đối với storage engine tương thích S3 được cung cấp bởi commercial plugin S3-Pro, việc upload qua HTTP API cần được gọi qua nhiều bước.
Field Attachment
-
Lấy thông tin storage engine
Gọi action
getBasicInfotrên bảng storages (storages), đồng thời mang theo storage space identifier (storage name), request thông tin cấu hình storage engineVí dụ thông tin cấu hình storage engine được trả về:
-
Lấy thông tin pre-signed của nhà cung cấp dịch vụ
Gọi action
createPresignedUrltrên resourcefileStorageS3, gửi request dạng POST, và mang theo thông tin liên quan đến file trong body, lấy thông tin upload pre-signedMô tả:
- name: Tên file
- size: Kích thước file (đơn vị bytes)
- type: Kiểu MIME của file, có thể tham khảo: Các kiểu MIME thông dụng
- storageId: id của storage engine (field
idđược trả về ở bước 1) - storageType: Kiểu storage engine (field
typeđược trả về ở bước 1)
Ví dụ dữ liệu request:
Cấu trúc dữ liệu thông tin pre-signed lấy được như sau
-
Upload file
Sử dụng
putUrlđược trả về để gửi requestPUT, upload file dưới dạng body.Mô tả:
- putUrl: Field
putUrlđược trả về ở bước trước - file_path: Đường dẫn local của file cần upload
Ví dụ dữ liệu request:
- putUrl: Field
-
Tạo bản ghi file
Sau khi upload thành công, thông qua việc gọi action
createtrên resource bảng attachments (attachments), gửi request dạng POST, tạo bản ghi file.Mô tả các dữ liệu phụ thuộc trong data-raw:
- title: Field
fileInfo.titleđược trả về ở bước trước - filename: Field
fileInfo.keyđược trả về ở bước trước - extname: Field
fileInfo.extnameđược trả về ở bước trước - path: Mặc định trống
- size: Field
fileInfo.sizeđược trả về ở bước trước - url: Mặc định trống
- mimetype: Field
fileInfo.mimetypeđược trả về ở bước trước - meta: Field
fileInfo.metađược trả về ở bước trước - storageId: Field
idđược trả về ở bước 1
Ví dụ dữ liệu request:
- title: Field
File Collection
Ba bước đầu tương tự upload field attachment, nhưng ở bước 4 cần tạo bản ghi file, thông qua việc gọi action create trên resource file collection, gửi request dạng POST, và upload thông tin file thông qua body.
Mô tả các dữ liệu phụ thuộc trong data-raw:
- title: Field
fileInfo.titleđược trả về ở bước trước- filename: Field
fileInfo.keyđược trả về ở bước trước- extname: Field
fileInfo.extnameđược trả về ở bước trước- path: Mặc định trống
- size: Field
fileInfo.sizeđược trả về ở bước trước- url: Mặc định trống
- mimetype: Field
fileInfo.mimetypeđược trả về ở bước trước- meta: Field
fileInfo.metađược trả về ở bước trước- storageId: Field
idđược trả về ở bước 1Ví dụ dữ liệu request:

