FormData — це детальний вступ і використання https://developer.mozilla.org/zh ... ng_FormData_Objects
Методи та події FormData там вже дуже чіткі, тому я не буду витрачати на них час. У цій статті головним чином пояснюється використання об'єктів FormData та асинхронне завантаження файлів.
Об'єкт FormData дозволяє нам організувати колекцію пар ключ-значення, надісланих за допомогою об'єкта XMLHttpRequest. Він переважно використовується для надсилання даних форм, але може застосовуватися незалежно від передачі даних за допомогою форм.
1. Створити об'єкт FormData з нуля
Ви можете створити власний об'єкт FormData, а потім додати пари ключ-значення до об'єкта за допомогою методу append(), ось так:
Примітка: Поля "userfile" і "webmasterfile" містять файли. Номер, призначений полю "accountnum", безпосередньо перетворюється на рядок методом FormData.append() (значення поля може бути плямою, файлом або рядком: якщо значення не є ні blob, ні файлом, значення конвертується у рядок). Цей приклад створює екземпляр FormData з полями "username", "accountnum", "userfile" та "webmasterfile", а потім використовує метод send() об'єкта XMLHttpRequest для надсилання даних форми. Поле «webmasterfile» — це «blob». Об'єкт blob представляє сирі дані об'єкта файлу. Але дані, представлені блобом, не обов'язково мають бути у рідному форматі javascript. Файловий інтерфейс базується на blobs, успадковуючи функціонал blob і розширюючи підтримку користувацьких файлових систем. Щоб побудувати blob, можна викликати конструктор Blob().
2. Отримати об'єкт FormData з HTML-форми
Щоб отримати об'єкт FormData з існуючими даними форми, потрібно вказати елемент форми при створенні об'єкта FormData.
Ось так:
Ви також можете додати додаткові дані після отримання об'єкта FormData, ось так:
Це дозволяє додати додаткову інформацію перед відправкою, не обов'язково редаговану користувачем.
3. Використовуйте об'єкт FormData для надсилання файлу
Ви можете використовувати FormData для надсилання файлів. Просте <form>середнє може <input>включати елемент:
Потім ви можете використати наступний код для відправлення:
Ви також можете додати File або Blob безпосередньо до об'єкта FormData, ось так:
При використанні методу append() може використовуватися третій параметр для надсилання імені файлу (який надсилається серверу через заголовок Content-Disposition). Якщо третій параметр не вказаний або цей параметр не підтримується, третій параметр за замовчуванням користується «blob».
Якщо ви встановите правильні параметри, ви також можете використовувати його з jQuery:
|