PlusMagi's Blog By Pitt Phunsanit Frontend,JavaScript,technology,typescript,Web PrimeReact Case Study: การทำ File Upload อัปโหลดไฟล์หลายรูปแบบพร้อม Progress Bar อัตโนมัติ

PrimeReact Case Study: การทำ File Upload อัปโหลดไฟล์หลายรูปแบบพร้อม Progress Bar อัตโนมัติ

ในโลกของการพัฒนาเว็บแอปพลิเคชันที่ซับซ้อน การจัดการข้อมูลผู้ใช้ถือเป็นหัวใจสำคัญอย่างยิ่ง โดยเฉพาะกระบวนการที่เกี่ยวข้องกับการอัปโหลดไฟล์ ซึ่งไม่เพียงแต่ต้องมีความเสถียรเท่านั้น แต่ยังต้องมอบประสบการณ์ที่ดีเยี่ยมให้กับผู้ใช้งานด้วย ความท้าทายไม่ได้อยู่แค่การรับไฟล์เข้าสู่ระบบ แต่รวมถึงการรองรับรูปแบบไฟล์ที่หลากหลาย การตรวจสอบความถูกต้องของข้อมูล (Validation) และการให้ Feedback แบบเรียลไทม์ตลอดกระบวนการ


เจาะลึกรายละเอียดและประเด็นสำคัญ

การสร้างระบบอัปโหลดไฟล์ที่สมบูรณ์แบบด้วย PrimeReact นั้น ต้องอาศัยการผสมผสานระหว่าง State Management, การจัดการ Event ของ Input File และการใช้ Hooks อย่างมีประสิทธิภาพ หัวใจหลักคือการเปลี่ยนจากการส่งไฟล์ทีละไฟล์เป็นการจัดการ Array ของไฟล์ (File Array) พร้อมทั้งจำลองสถานะความคืบหน้า (Progress State) ให้กับแต่ละรายการที่กำลังอัปโหลด

เมื่อเราสามารถควบคุม Flow การทำงานทั้งหมดได้ ตั้งแต่การเลือกไฟล์หลายประเภท (เช่น PDF, JPG, PNG) ไปจนถึงการแสดง Progress Bar ที่แม่นยำ จะช่วยลดความสับสนของผู้ใช้ได้อย่างมาก และเพิ่มความเชื่อมั่นในระบบ ทำให้ผู้ใช้งานรู้สึกว่าข้อมูลของพวกเขากำลังถูกจัดการอย่างเป็นมืออาชีพและมีประสิทธิภาพสูง

import React, { useState } from 'react';
import { UploadFile } from 'primereact/uploadfile'; // สมมติว่าใช้ Component นี้

interface FileItem {
    file: File;
    progress: number;
}

const MultiUploadComponent = () => {
    const [uploadedFiles, setUploadedFiles] = useState([]);

    // ฟังก์ชันจำลองการอัปโหลดไฟล์แต่ละรายการพร้อม Progress Bar
    const handleUpload = async (file: File) => {
        setUploadedFiles(prev => [...prev, { file, progress: 0 }]);
        let currentProgress = 0;
        while (currentProgress < 100) {
            await new Promise(resolve => setTimeout(resolve, 50)); // จำลองการทำงาน
            currentProgress += Math.floor(Math.random() * 10) + 5;
            setUploadedFiles(prev => prev.map(item => 
                item.file === file ? { ...item, progress: Math.min(100, currentProgress) } : item
            ));
        }
    };

    // Logic สำหรับการจัดการไฟล์ที่เลือกมาทั้งหมด...
    return (
        
{/* PrimeReact Upload Component จะถูกผูกกับ logic นี้ */} { /* เพิ่ม file เข้า array */ }} /> {uploadedFiles.map((item, index) => (
{item.file.name} {/* Progress Bar Component จะแสดงผลตาม item.progress */}

Progress: {Math.round(item.progress)}%

))}
); }; export default MultiUploadComponent;

การนำไปประยุกต์ใช้ในชีวิตและการทำงานยุคใหม่

  • ระบบ Onboarding พนักงาน (HR Tech): การให้พนักงานใหม่อัปโหลดเอกสารหลายประเภทพร้อมกัน เช่น บัตรประชาชน (PDF), รูปถ่าย (JPG) และใบรับรองการศึกษา (PNG) ระบบต้องสามารถจัดการไฟล์เหล่านี้ได้อย่างถูกต้องและแสดงสถานะความคืบหน้าเพื่อลดความกังวลของผู้ใช้ในช่วงเวลาที่สำคัญ
  • แพลตฟอร์ม E-commerce/Creative Asset Management: เมื่อผู้ขายหรือนักออกแบบต้องอัปโหลดชุดรูปภาพสินค้าหลายมุมมอง หรือไฟล์วิดีโอขนาดใหญ่ ระบบจะต้องรองรับการตรวจสอบประเภทไฟล์ (Image, Video) และแสดง Progress Bar ที่แม่นยำ เพื่อให้มั่นใจว่าสินทรัพย์ดิจิทัลทั้งหมดถูกส่งเข้าสู่ระบบอย่างสมบูรณ์

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


อ่านเพิ่มเติม