Skip to content

Instantly share code, notes, and snippets.

@pinkhominid
Created September 24, 2019 10:15
Show Gist options
  • Select an option

  • Save pinkhominid/e6f53706e0dd8cf34f2bd94c3aa357c5 to your computer and use it in GitHub Desktop.

Select an option

Save pinkhominid/e6f53706e0dd8cf34f2bd94c3aa357c5 to your computer and use it in GitHub Desktop.
Upload a file with node-fetch and form-data
const fs = require('fs');
const fetch = require('node-fetch');
const FormData = require('form-data');
const filePath = `path/to/file.ext`;
const form = new FormData();
const stats = fs.statSync(filePath);
const fileSizeInBytes = stats.size;
const fileStream = fs.createReadStream(filePath);
form.append('field-name', fileStream, { knownLength: fileSizeInBytes });
const options = {
method: 'POST',
credentials: 'include',
body: form
};
fetch(apiUrl, { ...options })
.then(res => {
if (res.ok) return res;
throw res;
});
@hweeks

hweeks commented Nov 29, 2022

Copy link
Copy Markdown

to clarify for TS devs that land here:

  1. add form-data
    • yarn add --exact form-data
  2. restart ts lang server
    • Command Palette -> Restart TS Server
  3. deal with correct types

@YeDaxia

YeDaxia commented Dec 21, 2022

Copy link
Copy Markdown

Really helpful, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment