2015-06-24 11 views
5

Ricevo un oggetto Javascript req.files. Questo oggetto può avere più file sotto di esso. req.files è objecte non èarray.Genera il nome oggetto javascript aggiungendo una stringa all'oggetto

Così, se l'utente aggiunge tre file, l'oggetto sarà simile:

req.files.file0 
req.files.file1 
req.files.file2 

dove file0, file1 ecc è un altro oggetto.

L'utente può aggiungere fino a 15 file. Come posso controllare il loop su tali oggetti & leggere le informazioni da req.files.fileX? Devo supportare IE 11 & chrome.

+1

'req.files [ "file" + i]' – Satpal

risposta

6

È possibile utilizzare la notazione della parentesi per accedere alle proprietà di un oggetto mediante una stringa. Prova questo:

for (var i = 0; i < Object.keys(req.files).length; i++) { 
    var file = req.files['file' + i]; 
    if (file) { 
     // use file here... 
    } 
} 

Example fiddle

+0

questo è perfetto !!! – SharpCoder

+0

Felice di aiutare :) –

1

Così sto assumendo l'oggetto req assomiglia a questo:

var req = { 
    files: { 
    file0: {}, 
    file1: {}, 
    file2: {}, 
    //... 
    file14: {} 
    } 
}; 

Se è così, è possibile fare riferimento al file in questo modo: req.files['file0']

Quindi il tuo ciclo potrebbe essere simile a questo:

for (prop in req.files) { 
    var file = req.files[prop]; 
} 

Ma tu non hai nemmeno bisogno di usare un ciclo:

var getReqFile = function(x){ 
    return req.files['file' + x] || null; 
} 
var file = getReqFile(5); 
Problemi correlati