expressjs / multer

Node.js middleware for handling `multipart/form-data`.
MIT License
11.63k stars 1.06k forks source link

File type shows correct on the frontend but it changes to application/octet-stream on the backend #1250

Open nirajchaurasiya opened 7 months ago

nirajchaurasiya commented 7 months ago

I am uploading file from frontend to get URL but when I upload the file with multer, it automatically changes the file type on the backend.

I used word changes here because the file type shows correct on the frontend. For example: the file I am uploading is of type

{
path: "2023-12-14 13-19-55.mkv"
type: "video/x-matroska"
lastModified: 1702539348430
lastModifiedDate: Thu Dec 14 2023 13:20:48 GMT+0545 (Nepal Time) {}
name: "2023-12-14 13-19-55.mkv"
size: 17555107
}

But on the backend it shows:

{
  fieldname: 'imageData',
  originalname: '2023-12-14 13-19-55.mkv',      
  encoding: '7bit',
  mimetype: 'application/octet-stream',
  destination: 'uploads/',
  filename: '1712392840374-2023-12-14 13-19-55.mkv',
  path: 'uploads\\1712392840374-2023-12-14 13-19-55.mkv',
  size: 17555107
}

Why does it change the file type?

joeyguerra commented 7 months ago

@nirajchaurasiya the first place I would start looking is this line of code in BusBoy, which is what multer uses behind the scenes.

I'm guessing the browser doesn't know what file type .mkv is and is setting the content-type to application/octet-stream.