multer如何确定file.mimetype的值

How does multer determine the value of file.mimetype

Multer's file 对象包含一个 mimetype 值。文档将其描述为 "Mime type of the file",但未提供其他详细信息。

该字段的值是如何确定的?它只是客户端提供的Content-Type:(很容易被欺骗)还是上传的文件以某种方式评估可以帮助确定真实文件类型?

通过跟踪源代码,它来自 content-type header.

我是这样追踪的:

make-middleware.js in Multer:其中有一个 busboy 流 object 侦听 file 事件并将 mimetype 作为回调函数的输入参数之一. mimetype 附加到用户获得的 req.files

busboybusboy 实例是用请求 headers 创建的,由它自己的 parseHeadersparseParams 函数解析。您可以在 content-type header.

上发现它正在做一些事情

进一步跟踪,你会发现它applies the Dicer object监听headers事件并使用解析的mimeType向busboy发送file事件。