Skip to content

Instantly share code, notes, and snippets.

@seyfer
Forked from ibreathebsb/upload.js
Created June 25, 2021 10:24
Show Gist options
  • Save seyfer/9a1e399548a87a245cd90a07c1d06afc to your computer and use it in GitHub Desktop.
Save seyfer/9a1e399548a87a245cd90a07c1d06afc to your computer and use it in GitHub Desktop.
file upload from dataUrl with axios
// Note: only for modern browser
import axios from 'axios'
// helper function: generate a new file from base64 String
const dataURLtoFile = (dataurl, filename) => {
const arr = dataurl.split(',')
const mime = arr[0].match(/:(.*?);/)[1]
const bstr = atob(arr[1])
let n = bstr.length
const u8arr = new Uint8Array(n)
while (n) {
u8arr[n - 1] = bstr.charCodeAt(n - 1)
n -= 1 // to make eslint happy
}
return new File([u8arr], filename, { type: mime })
}
// generate file from base64 string
const file = dataURLtoFile('data:image/png;base64,iVBORw0KGgoAAAANSUhEU...')
// put file into form data
const data = new FormData()
data.append('img', file, file.name)
// now upload
const config = {
headers: { 'Content-Type': 'multipart/form-data' }
}
axios.post('/path/to/upload', data, config).then(response => {
console.log(response.data)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment