Skip to main content

Chuyển đổi FormData

Khi thực hiện request Inertia có chứa file (kể cả file lồng nhau), Inertia sẽ tự động chuyển đổi dữ liệu request thành object FormData. Việc chuyển đổi này là cần thiết để gửi request multipart/form-data qua XHR. Nếu muốn request luôn sử dụng object FormData bất kể dữ liệu có chứa file hay không, bạn có thể truyền tùy chọn forceFormData khi thực hiện request.
Bạn có thể tìm hiểu thêm về interface FormData trong tài liệu MDN.

Ví dụ tải file lên

Hãy xem một ví dụ hoàn chỉnh về tải file lên bằng Inertia. Ví dụ này bao gồm cả input văn bản name và input file avatar.
Ví dụ này dùng Inertia form helper để thuận tiện vì form helper cho phép truy cập dễ dàng tiến trình upload hiện tại. Tuy nhiên, bạn vẫn có thể gửi form bằng manual Inertia visits.

Giới hạn của multipart

Upload file bằng request multipart/form-data không được một số server-side framework hỗ trợ nguyên bản khi dùng HTTP method PUT, PATCH hoặc DELETE. Cách khắc phục đơn giản nhất là upload file bằng request POST. Tuy nhiên, một số framework như LaravelRails hỗ trợ form method spoofing, cho phép upload file bằng POST nhưng để framework xử lý request như PUT hoặc PATCH. Cách này được thực hiện bằng cách thêm thuộc tính _method vào dữ liệu request.

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

Bài dịch này được đối chiếu từ tài liệu Inertia.js v3 chính thức. Nếu có khác biệt do phiên bản hoặc cập nhật mới, hãy ưu tiên tài liệu chính thức làm nguồn tham chiếu.