2017-10-20 145 views
0

我使用NodeJS与socket.io和socketio-file-upload上传多个文件,它工作的很棒!不过,我遇到了一个问题,我试图保存输入的名称属性,这些文件将它们保存到我的数据库中。使用socketio-file-upload上传多个文件

当我上传一个或多个文件时,我似乎无法访问输入字段名称或显示哪些文件来自哪个输入字段的内容。

这里是我的面前:

var uploader = new SocketIOFileUpload(socket); 

var array_files_lvl_3 = [ 
    document.getElementById("l3_id_front"), 
    document.getElementById("l3_id_back"), 
    document.getElementById("l3_address_proof_1"), 
    document.getElementById("l3_address_proof_2"), 
    document.getElementById("l3_passport") 
]; 

uploader.listenOnArraySubmit(document.getElementById("save_level_3"), array_files_lvl_3); 

这里是我的背:

var uploader = new siofu(); 
uploader.dir = "uploads/userL3"; 
uploader.listen(socket); 

uploader.on('saved', function(evnt){ 
    console.log(evnt); 
    //this "event" variable has a lot of information 
    //but none of it tells me the input name where it came from. 
}); 

这是 “EVNT” 变量会怎样:

enter image description here

回答

1

不幸的是,库不会发送该信息。所以没有任何现有的配置可以做。所以这需要修改代码。

client.js:374

var _fileSelectCallback = function (event) { 
    var files = event.target.files || event.dataTransfer.files; 
    event.preventDefault(); 
    var source = event.target; 
    _baseFileSelectCallback(files, source); 

client.js:343

var _baseFileSelectCallback = function (files, source) { 
    if (files.length === 0) return; 

    // Ensure existence of meta property on each file 
    for (var i = 0; i < files.length; i++) { 
     if (source) { 
      if (!files[i].meta) files[i].meta = { 
       sourceElementId: source.id || "", 
       sourceElementName: source.name || "" 
      }; 
     } else { 
      if (!files[i].meta) files[i].meta = {}; 
     } 
    } 

这些变化,我能够获得详细信息后event.file.meta

element