Skip to main content
Đây là tài liệu Inertia.js v1, phiên bản không còn được duy trì tích cực. Vui lòng tham khảo tài liệu v3.

Chuyển đổi sang 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. Trước phiên bản 0.8.0, Inertia không tự động chuyển request sang FormData. Nếu đang sử dụng bản phát hành Inertia cũ hơn phiên bản này, bạn cần tự thực hiện việc chuyển đổi.

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 sử dụng form helper của Inertia để thuận tiện hơn, vì form helper cho phép truy cập dễ dàng vào tiến trình tải lên hiện tại. Tuy nhiên, bạn vẫn có thể gửi form bằng các lần truy cập Inertia thủ công.

Giới hạn của multipart

Việc tải file bằng request multipart/form-data không được hỗ trợ nguyên bản trong một số framework phía máy chủ khi sử dụng các HTTP method PUT, PATCH hoặc DELETE. Cách đơn giản nhất để khắc phục giới hạn này là tải file bằng request POST. Tuy nhiên, một số framework như LaravelRails hỗ trợ giả lập HTTP method của form, cho phép bạn tải 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 v1 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.