Methods
objectToFormData(formDataObject) → {FormData}
Constructs a FormData object, to be used in requests, from a given (plain) object, iterating its entries.
Additionally, this function streamlines field names, by discarding PHP-style array field name conventions like "files[]", by removing the brackets. So, if you have a field named "files[]" and another field named "files", both will just end up in one "files"-field.
Files and Blobs can be provided as-is (constructed programmatically of retrieved from file inputs via .files
).
Alternatively (and if you manually want to define the filename), you can provide plain objects to describe a File or
Blob to add to the FormData:
- use {file : File, ?name : String} to add "file" as a File and optionally set "name" to define a filename, taking precedence over what is already defined in the File object itself
- use {blob : Blob|String, ?name : String, ?mimeType : String} to add "blob" as a Blob (if this is a string, it will be treated as the content of a new Blob), optionally using "name" as the filename (I'd recommend to set this) and optionally setting the file type via the MIME type defined in "mimeType".
In contrast to formDataToObject
, this function does not need a polyfill in Internet Explorer, since it only uses
the FormData constructor and the .append()
method, which are both supported.
Parameters:
Name | Type | Description |
---|---|---|
formDataObject |
Object | object to iterate, to create FormData based on its entries |
- Source:
- See:
Returns:
- Type
- FormData
Example
const formData = objectToFormData({
secrethash : 123456789,
firstname : 'Paul',
lastname : 'Atreides',
houses : ['Atreides', 'Fremen', 'Corrino'],
diary : {file : new File(['Dear Diary, ...'], 'diary.txt', {type : 'text/plain', lastModified : new Date()})},
instagramPage : {blob : '<html>...</html>', name : 'instagram.html', mimeType : 'text/html'},
}).getAll('houses');
=> ['Atreides', 'Fremen', 'Corrino']