Google Flutter

Flutter: การอัพโหลดไฟล์แบบ Form Data ด้วย Dio

เรื่องที่เกี่ยวข้อง - Flutterverse, Google Flutter

แน่นอนว่าตัว Flutter นั้น มีส่วนที่ช่วยในการอัพโหลดไฟล์ หรือดาวน์โหลดไฟล์จาก Server ของเรา แต่ถ้าเกิดเงื่อนไขของเรา เป็นแบบนี้ล่ะ?

ทางฝั่ง Server หรือ Web API รับการอัพโหลดเป็น FormData เพราะต้องทำงานกับแอพเวอร์ชั่นเว็บด้วย

ส่วนนี้จะเป็นการประยุกต์ใช้ส่วนเสริมที่ชื่อว่า

  1. Image_Picker
  2. Dio
  3. http_parser

ใครยังไม่เคยใช้ ไม่คุ้นเคย ไปลองเรียนรู้การใช้งานก่อนได้

ซึ่งพอเราได้ที่อยู่ของไฟล์ในเครื่องมาแล้ว ก็สามารถนำมาอ้างอิงใช้งานตามโค้ดด้านล่างได้

Future<String?> upload() async {

    var filePath = 'ที่อยู่ของไฟล์ในเครื่อง';
    var fileName = 'ชื่อของไฟล์ในเครื่อง';
    
    // สร้าง form data โดยการเรียกใช้ FormData.fromMap()
    var formData = FormData.fromMap({
      'file': await MultipartFile.fromFile(
        filePath!,
        filename: fileName,

        // ใน Dio เวอร์ชั่นล่าสุด ต้องมีการกำหนด contentType นะ เช่นถ้าเป็นการอัพโหลดรูปต้องกำหนด Media Type แบบด้านล่าง
        // ปล. class MediaType อันนี้ 
        contentType: MediaType(
          'image',
          'jpeg',
        ),
      )
    });
    
    // ส่ง request แบบ POST ด้วย Dio ไปยัง URL endpoint ที่รับไฟล์ของเรา
    var response = await Dio().post(
      'https://nextflow.in.th/api/upload',
      data: formData
    );
}

และถ้าเกิดตัว Web API ของเรามีการใช้งาน token ด้วยก็สามารถแทรก token เข้าไปใน Request ได้ดังนี้

Dio().post(
  'https://nextflow.in.th/api/upload',
  data: formData,

  // สามารถกำหนด option header เพิ่มเข้าไปตอนส่ง request ได้
  options: Options(
       headers: {
         'Authorization':'Bearer token ใส่ตรงนี้',
       },
    ),
 );

ใครสนใจเรียนรู้ขั้นตอนเต็มๆ สามารถเรียนรู้ได้จากคอร์ส Workshop พิเศษใน Flutterverse ของพลได้เลย

เริ่มต้นยุค AI ด้วยคอร์สฟรี และพรีเมี่ยม กับพล

หากชอบสิ่งที่พลเล่า เรื่องที่พลสอน สามารถสนับสนุนพลโดยการเข้าเรียนคอร์สออนไลน์ของพลนะคร้าบ

  • เข้าใจง่าย ใช้ได้จริง ออกแบบการสอนอย่างเข้าใจโดยโค้ชพล
  • มีคอร์สสำหรับคนใช้งานทั่วไป จนถึงเรียนรู้เพื่อใช้งานในสายอาชีพขั้นสูง
  • ทุกคอร์สมีใบประกาศณียบัตรรับรองหลังเรียนจบ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save