นี่คือ API สำหรับการจัดการไฟล์มีเดีย (รูปภาพ วิดีโอ และเอกสาร PDF) ที่ช่วยให้คุณสามารถอัปโหลดได้หลายไฟล์, เรียกดูไฟล์มีเดีย และลบไฟล์มีเดียได้ **ระบบจะจัดเก็บไฟล์ต้นฉบับเท่านั้น
ใช้ Endpoint นี้เพื่ออัปโหลดรูปภาพ วิดีโอ หรือเอกสาร PDF หนึ่งไฟล์หรือหลายไฟล์พร้อมกัน ไฟล์มีเดียจะถูกจัดเก็บเป็นไฟล์ต้นฉบับเท่านั้น โดยไม่มีการปรับขนาดอัตโนมัติ ข้อมูลไฟล์มีเดียจะถูกบันทึกลงในฐานข้อมูล และจะมีการสร้าง UUID สำหรับไฟล์แต่ละไฟล์
https://stux.pro/stux_media_api.php
POST
Content-Type: multipart/form-data
image[]
: ไฟล์รูปภาพ วิดีโอ หรือเอกสาร PDF (สามารถเลือกได้หลายไฟล์โดยใช้ชื่อฟิลด์นี้)50 MB
const formData = new FormData();
const fileInput = document.getElementById('media'); // สมมติว่ามี <input type="file" id="media" multiple>
for (let i = 0; i < fileInput.files.length; i++) {
formData.append('image[]', fileInput.files[i]); // ใช้ 'image[]' ใน form data
}
fetch('https://stux.pro/stux_media_api.php', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
console.log('Upload Success:', data);
// data.results จะเป็น array ของผลลัพธ์การอัปโหลดแต่ละไฟล์
// แต่ละผลลัพธ์จะมี URLs ที่ถูก Rewrite แล้ว รวมถึง UUID ด้วย
})
.catch(error => {
console.error('Upload Error:', error);
});
{
"status": "multiple_upload_results",
"results": [
{
"status": "success",
"message": "Image uploaded and metadata saved successfully. Resizing is not applicable.",
"id": "1",
"uuid": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"original_user_filename": "photo1.jpg",
"unique_base_name": "media_66796c0d8f1e3_abcd",
"file_type": "image/jpeg",
"create_time": "2025-06-25 14:30:00",
"urls": {
"original_by_filename": "https://stux.pro/media/media_66796c0d8f1e3_abcd_original.jpg/original",
"original_by_uuid": "https://stux.pro/media/a1b2c3d4-e5f6-7890-1234-567890abcdef/original"
}
},
{
"status": "success",
"message": "Video uploaded and metadata saved successfully. Resizing is not applicable for videos.",
"id": "2",
"uuid": "b2c3d4e5-f6a7-8901-2345-67890abcdef0",
"original_user_filename": "video1.mp4",
"unique_base_name": "media_66796c0d8f1e3_efgh",
"file_type": "video/mp4",
"create_time": "2025-06-25 14:30:05",
"urls": {
"original_by_filename": "https://stux.pro/media/media_66796c0d8f1e3_efgh_original.mp4/original",
"original_by_uuid": "https://stux.pro/media/b2c3d4e5-f6a7-8901-2345-67890abcdef0/original"
}
},
{
"status": "success",
"message": "Document (PDF) uploaded and metadata saved successfully. Resizing is not applicable for documents.",
"id": "3",
"uuid": "c3d4e5f6-a7b8-9012-3456-7890abcdef01",
"original_user_filename": "document.pdf",
"unique_base_name": "media_66796c0d8f1e3_ijkl",
"file_type": "application/pdf",
"create_time": "2025-06-25 14:30:10",
"urls": {
"original_by_filename": "https://stux.pro/media/media_66796c0d8f1e3_ijkl_original.pdf/original",
"original_by_uuid": "https://stux.pro/media/c3d4e5f6-a7b8-9012-3456-7890abcdef01/original"
}
}
]
}
{
"status": "multiple_upload_results",
"results": [
{
"status": "success",
"message": "Image uploaded...",
"id": "1",
"...": "..."
},
{
"status": "error",
"message": "Invalid file type. Only image/jpeg, image/png, image/gif, video/mp4, video/webm, video/ogg, application/pdf are allowed.",
"original_user_filename": "unsupported.txt"
},
{
"status": "error",
"message": "File size exceeds limit (50MB).",
"original_user_filename": "large_file.zip"
}
]
}
ใช้ Endpoint นี้เพื่อเรียกดูไฟล์มีเดีย (รูปภาพ วิดีโอ หรือเอกสาร PDF) คุณสามารถระบุไฟล์มีเดียได้ด้วย **uuid
(แนะนำ)** หรือ filename
(จาก unique_base_name
ที่ได้จาก Response ของการอัปโหลด)
**สำคัญ**: ระบบนี้รองรับการส่งคืนเฉพาะไฟล์ต้นฉบับเท่านั้น ไม่มีการปรับขนาดรูปภาพอัตโนมัติเป็นขนาด S, M, L อีกต่อไป ไม่ว่าจะระบุ size
parameter เป็นอะไรก็ตาม API จะส่งคืนไฟล์ต้นฉบับเสมอ
https://stux.pro/media/
(ตามด้วย UUID หรือ filename และขนาดที่ต้องการ)
GET
{uuid}
: UUID ของไฟล์มีเดียจากฐานข้อมูล (เช่น a1b2c3d4-e5f6-7890-1234-567890abcdef
) (แนะนำ){filename}
: ชื่อไฟล์ต้นฉบับที่ถูกเก็บในเซิร์ฟเวอร์ (เช่น media_66796c0d8f1e3_abcd_original.jpg
, media_66796c0d8f1e3_efgh_original.mp4
, หรือ media_66796c0d8f1e3_ijkl_original.pdf
){size}
: ขนาดของไฟล์มีเดียที่ต้องการ (จะถูกละเว้นและส่งคืนไฟล์ต้นฉบับเสมอ)original
: ไฟล์มีเดียขนาดต้นฉบับs
, m
, l
: จะส่งคืนไฟล์ต้นฉบับhttps://stux.pro/media/a1b2c3d4-e5f6-7890-1234-567890abcdef/original
https://stux.pro/media/a1b2c3d4-e5f6-7890-1234-567890abcdef/s
https://stux.pro/media/b2c3d4e5-f6a7-8901-2345-67890abcdef0/original
https://stux.pro/media/media_66796c0d8f1e3_ijkl_original.pdf/original
API จะส่งคืนเนื้อหาไฟล์มีเดียโดยตรง (binary data) ด้วย Header Content-Type
ที่เหมาะสม (เช่น image/jpeg
, video/mp4
, application/pdf
)
{
"status": "error",
"message": "Media not found on server or not accessible."
}
ใช้ Endpoint นี้เพื่อลบไฟล์มีเดีย (รูปภาพ วิดีโอ หรือเอกสาร PDF) และข้อมูลที่เกี่ยวข้องทั้งหมดออกจากเซิร์ฟเวอร์และฐานข้อมูล คุณสามารถระบุไฟล์มีเดียด้วย **uuid
(แนะนำ)** หรือ id
https://stux.pro/media/delete/uuid/
หรือ https://stux.pro/media/delete/id/
(ตามด้วย UUID หรือ ID ของไฟล์มีเดียที่ต้องการลบ)
DELETE
{uuid}
: UUID ของไฟล์มีเดียที่ต้องการลบ (เช่น a1b2c3d4-e5f6-7890-1234-567890abcdef
) (แนะนำ){id}
: **(เลิกใช้)** ID ของไฟล์มีเดียที่ต้องการลบ (เช่น 123
)https://stux.pro/media/delete/uuid/a1b2c3d4-e5f6-7890-1234-567890abcdef
const mediaUuidToDelete = 'a1b2c3d4-e5f6-7890-1234-567890abcdef'; // แทนที่ด้วย UUID ไฟล์มีเดียจริง
fetch(`https://stux.pro/media/delete/uuid/${mediaUuidToDelete}`, {
method: 'DELETE'
})
.then(response => response.json())
.then(data => {
console.log('Delete Response:', data);
if (data.status === 'success') {
alert(`ไฟล์มีเดีย UUID ${mediaUuidToDelete} ถูกลบเรียบร้อยแล้ว`);
} else {
alert(`การลบล้มเหลว: ${data.message}`);
}
})
.catch(error => {
console.error('Delete Error:', error);
alert('เกิดข้อผิดพลาดในการลบไฟล์มีเดีย');
});
{
"status": "success",
"message": "Media file deleted successfully.",
"identifier": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
"identifier_type": "uuid",
"deleted_files_count": 1
}
{
"status": "error",
"message": "Media not found in database."
}