OVIRO LogoOVIRO
Quản lý File

Upload File

Upload file hoặc tạo thư mục mới

Endpoint

POST /v1/files

API này hỗ trợ 2 trường hợp:

  • Upload file: Gửi file qua multipart/form-data hoặc data_uri (base64).
  • Tạo thư mục: Gửi JSON với is_directory = true (chỉ áp dụng cho object_type = 10 hoặc 40).

Upload File (multipart/form-data)

Content-Type

multipart/form-data

Request Body

TrườngKiểuBắt buộcMô tả
filefileFile cần upload (gửi qua form field file)
company_idintID công ty
creator_idintID người upload
object_typeintLoại đối tượng. Xem Object Schema
object_idintKhôngID đối tượng liên kết (mặc định: 0)
statusintKhôngTrạng thái (mặc định: 1)
is_directoryboolKhôngLuôn = false hoặc không gửi khi upload file
directory_idintKhôngID thư mục cha (0 = root). Chỉ dùng với object_type hỗ trợ thư mục (10, 40)
descriptionstringKhôngMô tả file
originstringNguồn gốc file. Xem Object Schema
return_success_as_status_200anyKhôngNếu có trường này, response trả về HTTP 200 thay vì 201

Ví dụ cURL

curl -X POST "https://api.example.com/v1/files" \
  -H "Authorization: Bearer {token}" \
  -F "file=@/path/to/image.jpg" \
  -F "company_id=1" \
  -F "creator_id=10" \
  -F "object_type=10" \
  -F "origin=company" \
  -F "status=1" \
  -F "directory_id=0"

Upload File (Data URI / Base64)

Content-Type

application/json

Request Body

TrườngKiểuBắt buộcMô tả
data_uristringChuỗi Data URI (base64) của ảnh, ví dụ: data:image/jpeg;base64,/9j/4AAQ...
data_uri_titlestringTên file (dùng làm title)
company_idintID công ty
creator_idintID người upload
object_typeintLoại đối tượng
object_idintKhôngID đối tượng liên kết (mặc định: 0)
statusintKhôngTrạng thái (mặc định: 1)
is_directoryboolKhôngfalse hoặc không gửi
directory_idintKhôngID thư mục cha
descriptionstringKhôngMô tả file
originstringNguồn gốc file

Ví dụ JSON

{
    "data_uri": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...",
    "data_uri_title": "webcam-capture.jpg",
    "company_id": 1,
    "creator_id": 10,
    "object_type": 30,
    "origin": "checkin",
    "status": 1
}

Lưu ý: Upload qua Data URI luôn lưu với extension jpg.


Tạo thư mục (Create Directory)

Content-Type

application/json

Request Body

TrườngKiểuBắt buộcMô tả
titlestringTên thư mục
company_idintID công ty
creator_idintID người tạo
object_typeintChỉ cho phép 10 (File) hoặc 40 (CMS)
object_idintKhôngID đối tượng liên kết
statusintKhôngTrạng thái
is_directoryboolPhải = true
directory_idintKhôngID thư mục cha (0 = root)
descriptionstringKhôngMô tả thư mục
originstringNguồn gốc

Ví dụ JSON

{
    "title": "Hình ảnh sản phẩm 2026",
    "company_id": 1,
    "creator_id": 10,
    "object_type": 10,
    "is_directory": true,
    "directory_id": 0,
    "origin": "company",
    "status": 1
}

Response Schema

HTTP 201 - Created (hoặc 200 nếu có return_success_as_status_200)

Trả về File Object vừa tạo.

Ví dụ Response (Upload file)

{
    "id": 1234,
    "company_id": 1,
    "creator_id": 10,
    "directory_id": 0,
    "object_type": 10,
    "object_id": 0,
    "md5_hash": "d41d8cd98f00b204e9800998ecf8427e",
    "file_path": "1/202603/1234-1234567890-1741234567.jpg",
    "width": 1920,
    "height": 1080,
    "randomcode": "1234567890",
    "title": "image.jpg",
    "description": "",
    "extension": "jpg",
    "size_in_byte": 204800,
    "origin": "company",
    "customer_id": 0,
    "status": 1,
    "is_directory": 0,
    "ip_address": "192.168.1.1",
    "date_created": 1741234567,
    "date_modified": 1741234567,
    "url": "https://file.example.com/1/202603/1234-1234567890-1741234567.jpg"
}

Quyền hạn (Permissions)

Điều kiệnMô tả
file.uploadBắt buộc khi object_type = 10 (File công ty)

Error Codes

Mã lỗiMô tả
error_company_id_requiredID công ty không được để trống
error_company_id_notfoundID công ty không tìm thấy
error_user1_id_requiredID người tạo không được để trống
error_user_id_notfoundID người tạo không tìm thấy
error_not_permission_uploadKhông có quyền upload (file.upload)
error_parent_directory_not_foundThư mục cha không tồn tại hoặc không hợp lệ
error_parent_directory_forbiddenKhông cho phép tạo thư mục con trong object_type này
error_max_file_in_one_directory_exceedVượt quá số file tối đa cho phép trong một thư mục (10.000)
error_max_directory_in_one_directory_exceedVượt quá số thư mục con tối đa cho phép (10.000)
error_origin_is_requiredorigin không được để trống
error_origin_is_invalidorigin không hợp lệ
error_file_requiredKhông có file nào được gửi lên
error_file_type_invalidĐịnh dạng file không được hỗ trợ
error_file_size_invalidFile vượt quá 25 MB
error_quota_limit_exceedVượt quá dung lượng quota được cấp
error_directory_name_requiredTên thư mục không được để trống
error_directory_name_existedTên thư mục đã tồn tại trong cùng thư mục cha
error_object_type_invalidObject type không hợp lệ (khi tạo thư mục)
error_system_file_can_not_copyLỗi hệ thống khi sao chép file
error_file_record_can_not_updateLỗi hệ thống khi cập nhật record
error_system_directory_can_not_createdKhông thể tạo thư mục hệ thống
error_system_directory_can_not_writableThư mục hệ thống không có quyền ghi

On this page