Skip to main content

Handling File Uploads in Express

 

Express and Multi-Part Uploads

Historically I've used the express Multer middleware  and associated typescript types (@types/multer).

Multer accepts files encoded as part of a  multipart/form-data request. The file is added to the req object as req.file : Express.Multer.File 

Storing Uploaded Files in S3

It is possible to use minio to immediately pass the file through to an S3 layer via the buffer object. Using a Minio client object:

async function handleFileUpload(req: Express.Request, res: Express.Response) {
  
  const fileObj : Express.Multer.File = req.file
  let file = await Minio.putObject(config.minio.bucket, objName, fileObj.buffer);
  
  return {"status":"uploaded", file}

}