Superagent: Posting multipart/form-data

Created on 14 Oct 2019  路  1Comment  路  Source: visionmedia/superagent

Hi, I'm trying to test a route that accepts multipart/form-data. The route works via postman, a node script, and in the browser, but I can't seem to get it to work with supertest (who referred me to the superagent docs).

Here's the code that's working in a simple node script:

  const form = new FormData()
  form.append('entry', fs.createReadStream('./readme.md'))
  await axios.post('http://localhost:3001/api/v0/files/add', form, {
    headers: form.getHeaders()
  })
 // success!

I've tried numerous different strategies with forming a post via supertest:

test('POST file', done => {
  const form = new FormData()
  form.append('entry', fs.createReadStream('./readme.md'))
  request(app)
    .post('/api/v0/files/add')
    .type('form')
    .attach('entry', form)
    .set(form.getHeaders())
    .expect(201, done)
})

I've also tried the above with different variations, like removing .type or .set(headers), still with no luck.

The error seems to be throwing from the busboy lib, which is likely due to the multer lib:

Unhandled error. (Error: Part terminated early due to unexpected end of multipart data
      at node_modules/busboy/node_modules/dicer/lib/Dicer.js:65:36
      at processTicksAndRejections (internal/process/task_queues.js:75:11))Error [ERR_UNHANDLED_ERROR]: Unhandled error. (Error: Part terminated early due to unexpected end of multipart data
      at node_modules/busboy/node_modules/dicer/lib/Dicer.js:65:36
      at processTicksAndRejections (internal/process/task_queues.js:75:11))
      at PartStream.<anonymous> (node_modules/busboy/lib/types/multipart.js:278:17)
      at node_modules/busboy/node_modules/dicer/lib/Dicer.js:65:22

Here's the issue with supertest lib

any ideas what i'm doing wrong? Thanks for any help!

Most helpful comment

@Schwartz10 were you able to get this working? I would love to figure something like this out in my project, but cannot get .attach to work as I expect

>All comments

@Schwartz10 were you able to get this working? I would love to figure something like this out in my project, but cannot get .attach to work as I expect

Was this page helpful?
0 / 5 - 0 ratings

Related issues

ariemeow picture ariemeow  路  8Comments

tj picture tj  路  9Comments

kornelski picture kornelski  路  9Comments

djizco picture djizco  路  5Comments

kornelski picture kornelski  路  4Comments