Skip to content

Instantly share code, notes, and snippets.

@feliperodriguess
Created August 27, 2021 00:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save feliperodriguess/4c47b018821e45fb4b2a40d2a3d07def to your computer and use it in GitHub Desktop.
Save feliperodriguess/4c47b018821e45fb4b2a40d2a3d07def to your computer and use it in GitHub Desktop.
Create Form Data / Create Form Data Documents - FE integration helpers
// Usage: dispatch(upload(createFormDataDocuments([...event.target.files])))
export const createFormData = (data, isCamelized = false) => {
const formData = new FormData()
Object.keys(data).forEach(field => {
const fieldValue = data[field]
const formDataValue = (() => {
if (!fieldValue) {
return ''
}
if (fieldValue instanceof Blob || typeof fieldValue !== 'object') {
return fieldValue
}
return JSON.stringify(fieldValue)
})()
formData.append(isCamelized ? field : humps.decamelize(field), formDataValue)
})
return formData
}
export const createFormDataDocuments = (data, isCamelized = false) => {
const formData = new FormData()
Object.keys(data).forEach(field => {
const fieldValue = data[field]
const formDataValue = (() => {
if (!fieldValue) {
return ''
}
if (
fieldValue instanceof Blob ||
typeof fieldValue !== 'object' ||
Array.isArray(fieldValue)
) {
return fieldValue
}
return JSON.stringify(fieldValue)
})()
if (Array.isArray(formDataValue)) {
formDataValue.forEach(value => {
if (value instanceof Blob && value.constructor === Blob) {
formData.append(isCamelized ? field : humps.decamelize(field), value, value.name)
} else {
formData.append(isCamelized ? field : humps.decamelize(field), value)
}
})
} else if (formDataValue instanceof Blob && formDataValue.constructor === Blob) {
formData.append(
isCamelized ? field : humps.decamelize(field),
formDataValue,
formDataValue.name
)
} else {
formData.append(isCamelized ? field : humps.decamelize(field), formDataValue)
}
})
return formData
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment