AppFile

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

KeyValueDescription
FileSourceParameterAPP_FILE_SOURCEชื่อพารามิเตอร์สำหรับกำหนด File Source
FilePathParameterAPP_FILE_PATHชื่อพารามิเตอร์สำหรับกำหนดโฟลเดอร์ของไฟล์ หากไม่เคยมีโฟล์เดอร์ตามที่ Client ส่งมา เว็บเซอร์วิสจะทำการสร้างโฟล์เดอร์ให้อัตโนมัติ
FileIdParameterAPP_FILE_IDชื่อพารามิเตอร์สำหรับกำหนด File Id เมื่ออัพโหลดไฟล์ เว็บเซอร์วิสจะทำการเปลี่ยนชื่อไฟล์เป็นชื่อตาม File Id ตอนดาวน์โหลดหรือลบไฟล์ต้องอ้างอิงด้วยชื่อ File Id
FileListParameterAPP_FILE_LISTชื่อพารามิเตอร์สำหรับกำหนดรายการของ File Id โดยคั่นชื่อด้วยเครื่องหมาย comma (;) ใช้เมื่อเรียกเซอร์วิส /api/appfile/remove ซึ่งมีความสามารถลบไฟล์ใน 1 โฟลเดอร์ได้หลายรายการใน 1 Request
DefaultFileSourceDefaultกำหนดค่าเริ่มต้นของ 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.Service
Note

The output directory files and logging: C:\Users\00xxxx\AppData\Local\Temp\AtlasX

Upload Files

ParameterRequiredSample ValueDescription
APP_FILE_SOURCEfalseDefaultKey ของ FileSource ใน FileServer ที่คอนฟิกไว้ในไฟล์ appsettings ถ้าไม่ระบุ เว็บเซอร์วิสจะใช้ค่า Default
APP_FILE_PATHfalseAtlasX/FileSampleพาทของโฟล์เดอร์ที่ต้องการต่อกับ RemotePath ของ FileSource
FILE1trueFormDataไฟล์ที่ต้องการอัพโหลด หากต้องการอัพโหลดมากกว่า 1 ไฟล์ สามารถเพิ่มพารามิเตอร์ตัวใหม่ได้เลย
FILE2OptionalFormDataไฟล์ที่ต้องการอัพโหลด
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 กำหนด

Upload File
FieldData TypeSample ValueDescription
PARAMETER_NAMEStringFILE1ชื่อพารามิเตอร์
FILE_PATHStringMyFolderชื่อโฟลเดอร์ที่เก็บไฟล์
FILE_IDString256306090941373017-55293.pngชื่อไฟล์ที่ถูกเปลี่ยนเป็น File Id เป็นชื่อที่ไม่ซ้ำกับไฟล์อื่น
FILE_NAMEStringlogo-atlasx-outline.pngชื่อไฟล์ต้นฉบับ สามารถนำไปเก็บในฐานข้อมูลสำหรับนำไปแสดงผลใน App
CONTENT_TYPEStringimage/pngประเภทของไฟล์
STATUSBooleantrueสถานะสำหรับบอกว่าไฟล์รายการนี้อัพโหลดสำเร็จหรือไม่
DESCRIPTIONStringหาก 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'
Download File

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'
Preview File

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"' \
Remove File