Skip to main content

Upload file có progress và validation

Backend

React

Các lỗi thực tế hay gặp

  • Không revoke URL.createObjectURL() làm leak memory khi preview nhiều file.
  • Chỉ kiểm tra extension phía client nhưng không validate MIME/size phía server.
  • Cho submit nhiều lần trong lúc upload.
  • Giữ file object sau success làm người dùng tưởng chưa upload xong.
  • Dùng PUT/PATCH multipart với stack backend không parse như mong đợi; khi gặp case này hãy dùng method spoofing theo convention backend của bạn.

Preview ảnh đúng lifecycle

Không giữ object URL vĩnh viễn; browser memory cũng là resource.

Replace và remove là hai intent khác nhau

Nếu gom ba thao tác thành một boolean, UX Edit rất dễ xóa nhầm ảnh persisted.

Server storage phải transactional theo semantics

DB transaction không tự rollback file system. Pattern an toàn thường là:
Tùy failure requirement, production app có thể cần cleanup compensating action nếu DB update fail sau khi file mới đã được store.

Upload test cases


Tài liệu chính thức

Nội dung thực chiến trong bài được xây dựng dựa trên API và nguyên lý của Inertia.js v3 Documentation. Khi áp dụng vào dự án, hãy đối chiếu API cụ thể với tài liệu chính thức theo phiên bản bạn đang sử dụng.