@@ -338,17 +338,16 @@ app.put("/api/experiments/:id/files", upload.array("_files"), function(req, res,
338
338
delete req . body . _id ; // Delete ID (will not update otherwise)
339
339
var filesP = Array ( req . files . length ) ;
340
340
341
- for ( var i = 0 ; i < req . files . length ; i ++ ) {
342
- var file = req . files [ i ] ;
341
+ var saveGFSFile = function ( fileObj ) {
343
342
var fileId = new db . ObjectID ( ) ; // Create file ID
344
343
// Open new file
345
- var gfs = new db . GridStore ( db , fileId , file . originalname , "w" , { content_type : file . mimetype , promiseLibrary : Promise } ) ;
344
+ var gfs = new db . GridStore ( db , fileId , fileObj . originalname , "w" , { content_type : fileObj . mimetype , promiseLibrary : Promise } ) ;
346
345
gfs . open ( function ( err , gfs ) {
347
346
if ( err ) {
348
347
console . log ( err ) ;
349
348
} else {
350
349
// Write from buffer and flush to db
351
- gfs . write ( file . buffer , true )
350
+ gfs . write ( fileObj . buffer , true )
352
351
. then ( function ( gfs ) {
353
352
// Save file reference
354
353
filesP [ i ] = db . experiments . updateByIdAsync ( req . params . id , { $push : { _files : { _id : gfs . fileId , filename : gfs . filename } } } ) ;
@@ -358,6 +357,10 @@ app.put("/api/experiments/:id/files", upload.array("_files"), function(req, res,
358
357
} ) ;
359
358
}
360
359
} ) ;
360
+ } ;
361
+
362
+ for ( var i = 0 ; i < req . files . length ; i ++ ) {
363
+ saveGFSFile ( req . files [ i ] ) ; // Save file in function closure
361
364
}
362
365
363
366
// Check file promises
@@ -481,7 +484,7 @@ app.get("/files/:id", function(req, res, next) {
481
484
. then ( function ( file ) {
482
485
res . setHeader ( "Content-Disposition" , "attachment; filename=" + gfs . filename ) ; // Set as download
483
486
res . setHeader ( "Content-Type" , gfs . contentType ) ; // MIME Type
484
- res . send ( file . toString ( ) ) ; // Send file
487
+ res . send ( file ) ; // Send file
485
488
} )
486
489
. catch ( function ( err ) {
487
490
next ( err ) ;
0 commit comments