2017-10-20 50 views
0

En utilisant NodeJS avec socket.io et socketio-file-upload pour télécharger plusieurs fichiers, cela fonctionne très bien! Cependant j'ai un problème où j'essaye de sauver l'attribut de nom de l'entrée ces dossiers viennent pour les enregistrer dans ma base de données.Utilisation du téléchargement de fichiers socketio pour télécharger plusieurs fichiers

Lorsque je télécharge un ou plusieurs fichiers, je n'arrive pas à accéder au nom du champ de saisie ou à quelque chose qui me montre lequel des fichiers provient de quel champ de saisie.

Voici mon avant:

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); 

Et voici mon dos:

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. 
}); 

C'est ce que la variable "evnt" détient:

enter image description here

Répondre

1

Malheureusement, la La bibliothèque n'envoie pas cette information. Il n'y a donc rien de config que vous puissiez faire. Donc, cela nécessite une modification du code.

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 = {}; 
     } 
    } 

Après ces changements, je suis en mesure d'obtenir les détails dans event.file.meta

element