AppFile
เซอร์วิสสำหรับอัพโหลด ดาวน์โหลด และลบไฟล์บนเซิร์ฟเวอร์
คอนฟิก appsettings
{
"WebServiceSettings": {
"FileServer": {
"FileSourceParameter": "APP_FILE_SOURCE",
"FilePathParameter": "APP_FILE_PATH",
"FileIdParameter": "APP_FILE_ID",
"FileListParameter": "APP_FILE_LIST",
"DefaultFileSource": "Default",
"FileSource": {
"Default": {
"RemotePath": "AtlasX",
"Username": "",
"Password": "",
"Domain": ""
},
"Local": {
"RemotePath": "Z:\\MySharedDrive",
"Username": "",
"Password": "",
"Domain": ""
}
}
}
}
}FileServer
| Key | Value | Description |
|---|---|---|
| FileSourceParameter | APP_FILE_SOURCE | ชื่อพารามิเตอร์สำหรับกำหนด File Source |
| FilePathParameter | APP_FILE_PATH | ชื่อพารามิเตอร์สำหรับกำหนดโฟลเดอร์ของไฟล์ หากไม่เคยมีโฟล์เดอร์ตามที่ Client ส่งมา เว็บเซอร์วิสจะทำการสร้างโฟล์เดอร์ให้อัตโนมัติ |
| FileIdParameter | APP_FILE_ID | ชื่อพารามิเตอร์สำหรับกำหนด File Id เมื่ออัพโหลดไฟล์ เว็บเซอร์วิสจะทำการเปลี่ยนชื่อไฟล์เป็นชื่อตาม File Id ตอนดาวน์โหลดหรือลบไฟล์ต้องอ้างอิงด้วยชื่อ File Id |
| FileListParameter | APP_FILE_LIST | ชื่อพารามิเตอร์สำหรับกำหนดรายการของ File Id โดยคั่นชื่อด้วยเครื่องหมาย comma (;) ใช้เมื่อเรียกเซอร์วิส /api/appfile/remove ซึ่งมีความสามารถลบไฟล์ใน 1 โฟลเดอร์ได้หลายรายการใน 1 Request |
| DefaultFileSource | Default | กำหนดค่าเริ่มต้นของ File Source เมื่อไม่มีการส่งพารามิเตอร์ FileSourceParameter มา เว็บเซอร์วิสจะใช้ค่า File Source จากค่าเริ่มต้นที่กำหนด |
| FileSource | {…} | แมพโฟลเดอร์หรือ Network Drive สำหรับเก็บไฟล์ หากระบุแค่ชื่อ RemotePath เว็บเซอร์วิสจะทำการสร้าง RootPath ไว้ที่โฟลเดอร์ Temp ของ Windows หรือหากระบุพาทแบบเต็ม Physical Path นั้นต้องมีอยู่จริง หากเว็บเซอร์วิสหาโฟลเดอร์นั้นไม่เจอ จะแจ้งข้อผิดพลาด 500 Internal Server Error |
สามารถดูโฟล์เดอร์ค่าเริ่มต้นของ File Source ได้ตอนที่เราสั่งรันโปรเจคด้วยคำสั่ง dotnet run
dotnet run
The output directory files and logging: C:\Users\00xxxx\AppData\Local\Temp\AtlasX
[09:31:12 INF] Getting the AtlasX WebService running...
[09:31:14 INF] User profile is available. Using 'C:\Users\00xxxx\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
[09:31:14 INF] Now listening on: https://localhost:5001
[09:31:14 INF] Now listening on: http://localhost:5000
[09:31:14 INF] Application started. Press Ctrl+C to shut down.
[09:31:14 INF] Hosting environment: Development
[09:31:14 INF] Content root path: E:\Projects\AtlasX\Web\AtlasX.Web.Service\AtlasX.Web.ServiceNote
The output directory files and logging: C:\Users\00xxxx\AppData\Local\Temp\AtlasX
Upload Files
| Parameter | Required | Sample Value | Description |
|---|---|---|---|
| APP_FILE_SOURCE | false | Default | Key ของ FileSource ใน FileServer ที่คอนฟิกไว้ในไฟล์ appsettings ถ้าไม่ระบุ เว็บเซอร์วิสจะใช้ค่า Default |
| APP_FILE_PATH | false | AtlasX/FileSample | พาทของโฟล์เดอร์ที่ต้องการต่อกับ RemotePath ของ FileSource |
| FILE1 | true | FormData | ไฟล์ที่ต้องการอัพโหลด หากต้องการอัพโหลดมากกว่า 1 ไฟล์ สามารถเพิ่มพารามิเตอร์ตัวใหม่ได้เลย |
| FILE2 | Optional | FormData | ไฟล์ที่ต้องการอัพโหลด |
curl --location --request POST 'https://portal-atlasx.cdg.co.th/axws-demo/api/appfile/upload' \
--form 'APP_FILE_SOURCE="Default"' \
--form 'APP_FILE_PATH="MyFolder"' \
--form 'FILE1=@"C:/Users/00xxxx/Downloads/Logo/logo-atlasx-outline-black.png"'Json Response Format
{
"success": true,
"total": 2,
"message": "",
"data": [
{
"PARAMETER_NAME": "FILE1",
"FILE_PATH": "MyFolder",
"FILE_ID": "256306090941373017-55293.png",
"FILE_NAME": "logo-atlasx-outline.png",
"CONTENT_TYPE": "image/png",
"STATUS": true,
"DESCRIPTION": ""
},
{
"PARAMETER_NAME": "FILE2",
"FILE_PATH": "MyFolder",
"FILE_ID": "256306090941373037-60013.png",
"FILE_NAME": "logo-atlasx-outline-black.png",
"CONTENT_TYPE": "image/png",
"STATUS": true,
"DESCRIPTION": ""
}
]
}ไฟล์อยู่ใน RootPath และถูกเก็บในโฟลเดอร์ที่ Client กำหนด

| Field | Data Type | Sample Value | Description |
|---|---|---|---|
| PARAMETER_NAME | String | FILE1 | ชื่อพารามิเตอร์ |
| FILE_PATH | String | MyFolder | ชื่อโฟลเดอร์ที่เก็บไฟล์ |
| FILE_ID | String | 256306090941373017-55293.png | ชื่อไฟล์ที่ถูกเปลี่ยนเป็น File Id เป็นชื่อที่ไม่ซ้ำกับไฟล์อื่น |
| FILE_NAME | String | logo-atlasx-outline.png | ชื่อไฟล์ต้นฉบับ สามารถนำไปเก็บในฐานข้อมูลสำหรับนำไปแสดงผลใน App |
| CONTENT_TYPE | String | image/png | ประเภทของไฟล์ |
| STATUS | Boolean | true | สถานะสำหรับบอกว่าไฟล์รายการนี้อัพโหลดสำเร็จหรือไม่ |
| DESCRIPTION | String | หาก STATUS เป็น false จะมีรายละเอียดบอกถึงผิดพลาดที่ไม่สามารถอัพโหลดไฟล์นั้นได้ |
Download File
เป็นการโหลด Stream ของไฟล์ หากเปิดในเว็บบราวเซอร์ จะเป็นการบังคับดาวน์โหลดไฟล์เสมอ
curl --location --request GET 'https://portal-atlasx.cdg.co.th/axws-demo/api/appfile/download?APP_FILE_SOURCE=Default&APP_FILE_PATH=MyFolder&APP_FILE_ID=256306090941373017-55293.png'
Preview File
ส่งพารามิเตอร์เหมือนกับดาวน์โหลด แตกต่างกันตอนที่แสดงผล หากเว็บบราวเซอร์สามารถเปิดไฟล์นั้นได้ เว็บบราวเซอร์จะแสดงผลขึ้นมาเลยโดยการโหลด Stream ไว้ที่ Memory ของโปรแกรม (ไม่โหลดไฟล์มาเก็บไว้ที่เครื่อง Client) หากไม่สามารถแสดงผลไฟล์นั้นได้ เว็บบราวเซอร์จะทำการดาวน์โหลดไฟล์นั้นแทนการแสดงผล
curl --location --request GET 'https://portal-atlasx.cdg.co.th/axws-demo/api/appfile/preview?APP_FILE_SOURCE=Default&APP_FILE_PATH=MyFolder&APP_FILE_ID=256306090941373017-55293.png'
Remove Files
การลบไฟล์สามารถลบไฟล์ในโฟล์เดอร์ที่ Client ต้องการมากกว่า 1 ไฟล์ ด้วยการส่งพารามิเตอร์ APP_FILE_LIST ด้วยชื่อ File Id ที่มีเครื่องหมาย Comma (;) คั่น
curl --location --request DELETE 'https://portal-atlasx.cdg.co.th/axws-demo/api/appfile/remove' \
--form 'APP_FILE_SOURCE="Default"' \
--form 'APP_FILE_PATH="MyFolder"' \
--form 'APP_FILE_LIST="256306090941373017-55293.png;256306090941373037-60013.png"'หรือหากต้องการลบโฟล์เดอร์ Client ไม่ต้องส่ง APP_FILE_LIST มา ให้ส่งแค่ APP_FILE_PATH เว็บเซอร์วิสก็จะทำการลบโฟลเดอ์นั้น
curl --location --request DELETE 'https://portal-atlasx.cdg.co.th/axws-demo/api/appfile/remove' \
--form 'APP_FILE_SOURCE="Default"' \
--form 'APP_FILE_PATH="MyFolder"' \