【问题标题】:How can I know which input send a certain opnedfiles in formidable?我怎么知道哪个输入发送了某个强大的 opnedfiles?
【发布时间】:2016-10-11 16:51:38
【问题描述】:

在这个问题之后:

How set a function into limits parameters on multer?

它没有收到答案,我正在寻找替代方案,而且我看到了强大的功能。 我找到了不同的教程,现在我有了这个代码:

exports.formidable= function (req, res, cb){         var form = new formidable.IncomingForm();         form.multiples = true;         form.parse(req, function(err, fields, files) {             res.end(util.inspect({fields: fields, files: files}));         });

        form.on('end', function(fields, files) {

           for(var i = 0; i / var temp_path = this.openedFiles[i].path; / 上传文件的文件名/ var file_name =Date.now()+"-"+ this.openedFiles[i].name; / 我们想要复制上传文件的位置*/ var new_location = './files/';

               fs.move(temp_path, new_location + file_name, function (err) { 如果(错误){ 控制台.错误(错误); } 别的 { console.log("成功!") } }); } }); 返回;

};

现在,如果我在代码的第一部分迭代文件,我会收到类似 [{input_file1:{file's attributes}} 的内容, {input_file2:{文件的属性}}]

并迭代打开的文件: [{0:{文件的属性}, {1:文件的属性}}]

现在,我可以确定这两个对象的顺序相同吗? 而且,如果我认为答案不是,我可以从第二个对象中检索输入名称吗? 如果不可能,是否有一些解决方法可以做到这一点?

感谢您的帮助!

【问题讨论】:

    标签: node.js file-upload formidable


    【解决方案1】:

    我找到了一个“肮脏”的解决方案,但现在它工作正常,所以我想与你分享我的代码。 在 rules_upload.js 我添加了这段代码:

    var tmp=''; var x=0;

    form.on('fileBegin', function(name, file) { 如果(x>0) { this.openedFiles[(x-1)].fieldName=tmp; } x++; tmp=名称; });

            form.on('end', function(fields, files) { this.openedFiles[(this.openedFiles.length-1)].fieldName=tmp;

    所以我添加了一个名为 fieldName 的新属性来检索此信息!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2011-09-12
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多