使用自定义 mimetype 表达 sendFile

Posted

技术标签:

【中文标题】使用自定义 mimetype 表达 sendFile【英文标题】:Express sendFile with custom mimetype 【发布时间】:2021-10-09 15:11:46 【问题描述】:

我有一个图像上传系统,其中文件以 uuid 作为名称存储。还有一个数据库条目,用于存储文件的原始 mimetype。 我想使用 express sendFile 函数将文件提供给用户,但不幸的是,它会根据文件扩展名设置 mimetype,通常如下所示:

uploads/b56adbe4-6ab6-47f1-8db3-41eeb43e765c

因为它没有文件扩展名,所以 mimetype 始终设置为 application/octet-stream。那么有没有办法将 mimetype 更改为存储在数据库中的正确类型?让浏览器可以显示图片?

【问题讨论】:

【参考方案1】:

在你的情况下,我建议你上传带有扩展名的文件,例如:

uploads/b56adbe4-6ab6-47f1-8db3-41eeb43e765c.pdf

您可以使用multer配置文件上传,然后您可以将其发送给客户端或提供文件url

【讨论】:

【参考方案2】:

我找到了解决办法,只需设置内容类型标题:

            res.sendFile(body.file,  
                root : "./",
                headers:
                    "Content-Type":body.mimeType
                
            

【讨论】:

以上是关于使用自定义 mimetype 表达 sendFile的主要内容,如果未能解决你的问题,请参考以下文章

将自定义mimetype添加到rails格式

php代码片段: sendFile/videoStream/sendEmail/phpexcel/ffmpeg/zip

如何实现联系人连接(mimetype)来启动我的应用程序?

无法将 CSS 加载到 Vue cli 项目中。 Mimetype 始终是 html

Linux Sendfile 的优势

sendfile函数