เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ
การอัปโหลดไฟล์สำหรับทั้งฟิลด์แนบไฟล์ (Attachment fields) และคอลเลกชันไฟล์ (File collections) รองรับการทำงานผ่าน HTTP API ครับ/ค่ะ โดยวิธีการเรียกใช้งานจะแตกต่างกันไป ขึ้นอยู่กับ Storage Engine ที่ใช้สำหรับฟิลด์แนบไฟล์หรือคอลเลกชันไฟล์นั้นๆ ครับ/ค่ะ
สำหรับ Storage Engine แบบ Open-source ที่มาพร้อมกับโปรเจกต์ เช่น S3, OSS, และ COS การเรียกใช้ HTTP API จะเหมือนกับการอัปโหลดผ่านหน้า UI เลยครับ/ค่ะ โดยไฟล์จะถูกอัปโหลดผ่านฝั่งเซิร์ฟเวอร์ การเรียกใช้ API จำเป็นต้องส่ง JWT โทเค็นที่ได้จากการล็อกอินของผู้ใช้ผ่าน Authorization ในส่วนหัวของคำขอ (Request Header) ครับ/ค่ะ มิฉะนั้นจะถูกปฏิเสธการเข้าถึง
เริ่มต้นด้วยการเรียกใช้ create บนทรัพยากร attachments (ตารางแนบไฟล์) ส่งคำขอแบบ POST และอัปโหลดเนื้อหาไบนารีผ่านฟิลด์ file ครับ/ค่ะ หลังจากเรียกใช้ ไฟล์จะถูกอัปโหลดไปยัง Storage Engine เริ่มต้นครับ/ค่ะ
หากต้องการอัปโหลดไฟล์ไปยัง Storage Engine อื่น คุณสามารถใช้พารามิเตอร์ attachmentField เพื่อระบุ Storage Engine ที่กำหนดค่าไว้สำหรับฟิลด์ของคอลเลกชันนั้นๆ ได้เลยครับ/ค่ะ (หากไม่ได้กำหนดค่าไว้ ไฟล์จะถูกอัปโหลดไปยัง Storage Engine เริ่มต้นครับ/ค่ะ)
การอัปโหลดไปยังคอลเลกชันไฟล์จะสร้างเรคคอร์ดไฟล์โดยอัตโนมัติครับ/ค่ะ โดยคุณสามารถเรียกใช้ create บนทรัพยากรคอลเลกชันไฟล์ ส่งคำขอแบบ POST และอัปโหลดเนื้อหาไบนารีผ่านฟิลด์ file ได้เลยครับ/ค่ะ
เมื่ออัปโหลดไปยังคอลเลกชันไฟล์ ไม่จำเป็นต้องระบุ Storage Engine ครับ/ค่ะ ไฟล์จะถูกอัปโหลดไปยัง Storage Engine ที่กำหนดค่าไว้สำหรับคอลเลกชันนั้นโดยอัตโนมัติ
สำหรับ Storage Engine ที่รองรับ S3 ซึ่งให้บริการผ่านปลั๊กอิน S3-Pro (เชิงพาณิชย์) การอัปโหลดผ่าน HTTP API จะต้องทำตามขั้นตอนหลายขั้นตอนครับ/ค่ะ
รับข้อมูล Storage Engine
เรียกใช้ getBasicInfo บนคอลเลกชัน storages (ตาราง Storage) พร้อมระบุชื่อ Storage (storage name) เพื่อขอข้อมูลการตั้งค่าของ Storage Engine ครับ/ค่ะ
ตัวอย่างข้อมูลการตั้งค่า Storage Engine ที่ได้รับกลับมา:
รับข้อมูล Presigned จากผู้ให้บริการ
เรียกใช้ createPresignedUrl บนทรัพยากร fileStorageS3 ส่งคำขอแบบ POST พร้อมแนบข้อมูลที่เกี่ยวข้องกับไฟล์ในส่วน Body เพื่อรับข้อมูลการอัปโหลดแบบ Presigned ครับ/ค่ะ
หมายเหตุ:
- name: ชื่อไฟล์
- size: ขนาดไฟล์ (หน่วยเป็น bytes)
- type: ชนิด MIME ของไฟล์ สามารถดูเพิ่มเติมได้ที่: ชนิด MIME ทั่วไป
- storageId: ID ของ Storage Engine (ฟิลด์
idที่ได้จากขั้นตอนแรก)- storageType: ชนิดของ Storage Engine (ฟิลด์
typeที่ได้จากขั้นตอนแรก)ตัวอย่างข้อมูลคำขอ:
โครงสร้างข้อมูลของ Presigned Information ที่ได้รับมีดังนี้ครับ/ค่ะ
อัปโหลดไฟล์
ใช้ putUrl ที่ได้รับกลับมาเพื่อส่งคำขอแบบ PUT โดยอัปโหลดไฟล์เป็นส่วน Body ครับ/ค่ะ
หมายเหตุ:
- putUrl: ฟิลด์
putUrlที่ได้จากขั้นตอนก่อนหน้า- file_path: พาธของไฟล์ในเครื่องที่ต้องการอัปโหลด
ตัวอย่างข้อมูลคำขอ:
สร้างเรคคอร์ดไฟล์
หลังจากอัปโหลดสำเร็จ ให้เรียกใช้ create บนทรัพยากร attachments (ตารางแนบไฟล์) โดยส่งคำขอแบบ POST เพื่อสร้างเรคคอร์ดไฟล์ครับ/ค่ะ
คำอธิบายข้อมูลที่จำเป็นใน data-raw:
- title: ฟิลด์
fileInfo.titleที่ได้จากขั้นตอนก่อนหน้า- filename: ฟิลด์
fileInfo.keyที่ได้จากขั้นตอนก่อนหน้า- extname: ฟิลด์
fileInfo.extnameที่ได้จากขั้นตอนก่อนหน้า- path: ค่าเริ่มต้นเป็นค่าว่าง
- size: ฟิลด์
fileInfo.sizeที่ได้จากขั้นตอนก่อนหน้า- url: ค่าเริ่มต้นเป็นค่าว่าง
- mimetype: ฟิลด์
fileInfo.mimetypeที่ได้จากขั้นตอนก่อนหน้า- meta: ฟิลด์
fileInfo.metaที่ได้จากขั้นตอนก่อนหน้า- storageId: ฟิลด์
idที่ได้จากขั้นตอนแรกตัวอย่างข้อมูลคำขอ:
สามขั้นตอนแรกจะเหมือนกับการอัปโหลดสำหรับฟิลด์แนบไฟล์ครับ/ค่ะ แต่ในขั้นตอนที่สี่ คุณจะต้องสร้างเรคคอร์ดไฟล์โดยการเรียกใช้ create บนทรัพยากรคอลเลกชันไฟล์ ส่งคำขอแบบ POST และอัปโหลดข้อมูลไฟล์ผ่านส่วน Body ครับ/ค่ะ
คำอธิบายข้อมูลที่จำเป็นใน data-raw:
- title: ฟิลด์
fileInfo.titleที่ได้จากขั้นตอนก่อนหน้า- filename: ฟิลด์
fileInfo.keyที่ได้จากขั้นตอนก่อนหน้า- extname: ฟิลด์
fileInfo.extnameที่ได้จากขั้นตอนก่อนหน้า- path: ค่าเริ่มต้นเป็นค่าว่าง
- size: ฟิลด์
fileInfo.sizeที่ได้จากขั้นตอนก่อนหน้า- url: ค่าเริ่มต้นเป็นค่าว่าง
- mimetype: ฟิลด์
fileInfo.mimetypeที่ได้จากขั้นตอนก่อนหน้า- meta: ฟิลด์
fileInfo.metaที่ได้จากขั้นตอนก่อนหน้า- storageId: ฟิลด์
idที่ได้จากขั้นตอนแรกตัวอย่างข้อมูลคำขอ: