2017-10-20 31 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