在上载整个文件之前先验证文件扩展名(node.js)

贝里的恐惧

我有一个充当路由器的Node.JS服务器,可以向它发出发布请求以上传文件,仅允许jpg / png / jpeg扩展名是我当前正在做的事情:

var form = new formidable.IncomingForm(),
    files = [],
    postToFolder,
    source,
    size = 0,
    dest;

postToFolder = '/path/';

form.on('file', function (field, file) {
    var fileType = file.type.split('/').pop();

     if (fileType == 'jpg' || fileType == 'png' || fileType == 'jpeg') {
        // alot of stuff
         }
        else{
            console.log('invalid filetype');
            fs.unlinkSync(file.path);
            console.log('Deleted: ' + file.path);
        }

这段代码有效,但是它将文件上传到/ tmp /文件夹,如果无效,则必须将其删除。如果我可以在文件完全上传之前检查文件扩展名,则对性能会更好。有人知道吗?我试过没有运气的谷歌搜索,并遇到了一些不适用于Formidable的答案。

编辑:

所以我发现它在启动之前会触发RIGHT,但是它确实开始写文件,取消文件或破坏服务器,导致整个文件磁盘写满了几次,文档确实很糟糕,所以我找不到任何东西可以让我“跳过”文件

form.on('fileBegin', function(field, file) {
    var fileType = file.type.split('/').pop();

    if (fileType == 'jpg' || fileType == 'png' || fileType == 'jpeg') {

    }
    else{

    }
});
贝里的恐惧

我已经在另一篇SO帖子中找到了解决方案,它的答案是相同的,但是很难找到答案,因为在文件上传之前,我一直在寻找某种特定的东西。我现在使用的代码(您可以在form.on('file'

form.onPart = function (part) {
    if(!part.filename || part.filename.match(/\.(jpg|jpeg|png)$/i)) {
        this.handlePart(part);
    }
    else {
        console.log(part.filename + ' is not allowed');
    }
}

使用express.js和node的上传文件,限制了扩展名

编辑:我还想指出,这不允许用户将.exe重命名为.jpg,然后他就可以通过它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

gzip 压缩中的 Node.js 文件扩展名

Node.js获取文件扩展名

Node.js获取文件扩展名

如何使用node.js获取具有特定文件扩展名的文件列表?

使用Express JS重定向到静态文件夹之前,请先验证请求

获取Node.js中没有扩展名的文件的MIME类型

匹配文件扩展名-正则表达式Node.js

javascript-如何使用强大功能在Node JS中获取文件扩展名?

如何使用node.js查找文件扩展名更改?

在不使用文件扩展名的情况下使用Node.JS在浏览器中显示json文件

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

使用multer在node.js(express)中上传后保留图像文件名和扩展名

Dropzone.js-如何在上传到文件夹之前更改文件名

git diff 有多少特定文件扩展名的文件(.js 而不是 .test.js)

Node.js上载文件的位置

为什么在导入 js 文件时需要 .js 扩展名

在 node.js 中保存之前处理文件名

提取带有扩展名的图像文件名-JS

Sails.js船长:如何在上载期间读取上载的文件流?

如何在Netbeans中编写扩展名为.js以外的其他扩展名的javascript文件?

上传之前在AngularJs中验证文件扩展名

Node.js递归验证fswrite的文件名

使用外部js在html中显示文件扩展名

在Express JS中使用Multer基于扩展名过滤文件

将文件扩展名从js更改为ts后,ionic无法再找到模块

是否可以阻止requireJS自动添加.js文件扩展名?

除了扩展名以外,.json,.txt,.html,.css和.js文件之间是否有区别?

如何在自己的Typo3 6.2扩展名中包含.js文件?

如何将文件扩展名.js附加到打字稿?