当前位置: 首页 > 知识库问答 >
问题:

如何利用multer和node js在不检查文件扩展名的情况下确定文件的真实类型

倪举
2023-03-14

当我在NodeJS中使用multer上传图像文件时,我想检查它的真实类型。例如,当我检查文件的mimtype或ext时,如果上传照片的ext从rar变为JPEG。服务器将接受文件,但它应该。谁能帮助我的文件筛选?

    var upload = multer({
       storage: storage,
       dest: "uploads/",
       fileFilter: function (req, file, cb) {
             if (
                 file.mimetype !== "image/png" &&
                 file.mimetype !== "image/gif" &&
                 file.mimetype !== "image/jpeg"
                  ) {
                     return cb(null, false);
               } else {
                      cb(null, true);
                   }
               },
          });

共有1个答案

陶智
2023-03-14

检查文件的实际类型的唯一方法是读取其内容。当“文件过滤器”在文件上传中发挥作用。服务器实际上并不拥有这个文件,所以'file'参数只有一些非常有限的属性。

因此,最好在客户端检查文件类型,如果文件类型不匹配或任何您想要的,那么在一开始就拒绝请求,无论如何,您可以在express http方法的回调函数中检查实际的文件类型,因为文件被分配在服务器的某个地方(为此,我使用了'file-type'包)`

const storage = multer.memoryStorage()

const upload = multer({
    storage: storage
})
const FileType = require('file-type')

app.post('/uploadfile', upload.single('file'), async (req, res) => {
    console.log(Object.keys(req.file))
    console.log(await FileType.fromBuffer(req.file.buffer));
    res.send()
})    `

也许您可以在中间件中做些什么,因为我在三周前学会了Node.js,所以我就把它留在这里。

 类似资料:
  • 问题内容: 我正在某个程序上工作,根据文件的扩展名,我需要做不同的事情。我可以用这个吗? 问题答案: 假设是一个字符串,可以使用: 要不区分大小写,并消除可能很大的else-if链:

  • 问题内容: 我想使用nodejs在src文件夹及其所有子文件夹中找到所有* .html文件。最好的方法是什么? 我认为很多开发人员都应该拥有出色且经过测试的解决方案,使用它比自己编写一个更好。 问题答案: node.js,递归简单函数: 如果想花哨的话,添加RegExp,并添加一个回调使其通用。

  • 问题内容: 我在图标中列出了一些文件名及其图标(例如Windows资源管理器中的图标)。我知道从本地文件系统中获得对象的两种获取图标的方法: 16x16或更大的图标: 由于我的文件存储在数据库中,因此没有对象。我的解决方法是创建一个具有特定文件扩展名的临时文件,使用上述两种方法之一,并缓存图标以在CellRenderer中显示它。 我搜索了没有临时文件的解决方案,发现两个我都不喜欢的文件: ,但我

  • 问题内容: 假设给了我一个URI,并且我想找到返回的文件的文件扩展名,那么我必须在Java中做什么。 例如,位于http://www.daml.org/2001/08/baseball/baseball- ont 的文件为http://www.daml.org/2001/08/baseball/baseball- ont.owl 当我做 我无法看到带有扩展名的完整文件名,以及如何获取文件扩展名。`

  • 问题内容: 设法将我的文件存储在一个文件夹中,但是没有文件扩展名。 有谁知道我将如何存储带有文件扩展名的文件? 问题答案: 从文档中:“ Multer不会为您添加任何文件扩展名,您的函数应返回带有文件扩展名的文件名。” 添加扩展名的方法如下: 我建议使用该属性来确定扩展名。例如: 更多信息:https://github.com/expressjs/multer

  • 问题内容: 我有一个上传脚本,需要检查文件扩展名,然后基于该文件扩展名运行单独的功能。有人知道我应该使用什么代码吗? 问题答案: 是您要寻找的 PHP.net