2016-06-10 16 views
0
genannt

I-Knoten-Mehr verwenden, versuchen Stream Bild Azure Blob Storage zu speichern, aber das ‚Schließen‘ Ereignis wird nicht genannt ?:schließt Ereignis nicht

var form = new multiparty.Form(); 
var fields = []; 
var parts = []; 

form.on('error', function(err) { 
    console.log('Error parsing form: ' + err.stack); 
}); 

form.on('field', function(name, value){ 
    fields.push({name:name, value: value}); 
}); 

form.on('part', function(part){ 
    parts.push({name:part.name, value:part}); 
}); 

form.on('close', function(){ 
     // How do I get the name called image from parts array, and save it to the azure storage? 
     var filename = part.filename; 
     var size = part.byteCount; 

     var onError = function(error) { 
      if (error) { 
       res.send({ grrr: error }); 
      } 
     }; 
     blobService.createBlockBlobFromStream('container', filename, part, size, onError); 
}); 
+0

'Teil' ist ein lesbarer Stream innerhalb des' part' Ereignisses. Sie sollten eine Logik für das Hochladen nach azurblau in das 'part'-Ereignis einfügen. Beispiel https://github.com/andrewrk/node-multiparty/blob/master/examples/azureblobstorage.js – Sami

+0

Ich möchte einige Informationen zu den Feldern vor dem Hochladen überprüfen. – Alvin

+0

Welche Art von Informationen? – Sami

Antwort

0

Wir sind auf die Antwort verweisen können Why multipart is not generating close events, um den Hinweis zu bekommen, warum Sie das close Ereignis nicht ausstrahlen können.

, da Sie die Daten in eine Datei nicht kochend sind, in der Nähe nur ausgegeben wird, wenn alle Daten aus dem erf Objekt geleitet wurden, erf verursachte intern emittieren Finish Veranstaltung ist es, die das Mehr close-Ereignis auslöst.

So neben alle Felder auf der Dateien in Form zu bringen, können Sie versuchen, file Ereignis zu nutzen, die Dateien später in tmp Ordner und verarbeiten sie in close Veranstaltung. E.G:

var blobService = azure.createBlobService(); 
var form = new multiparty.Form({autoFiles:true}); 
var fields = []; 
var files = []; 
form.on('field', function(name, value){ 
    fields.push({name:name, value: value}); 
}); 
form.on('file',function(name,file){ 
    files.push(file); 
}); 
form.on('close',function(){ 
    console.log(files); 
    var file = files[0]; 
    var onError = function(error) { 
     if (error) { 
      res.send({ grrr: error }); 
     } 
    }; 

    blobService.createBlockBlobFromStream(container, file.originalFilename, fs.createReadStream(file.path),file.size,file.headers, function(error) { 
    if (error) { 
     // error handling 
     console.log(error); 
    }else{ 
     res.end('File uploaded successfully'); 
    } 
    }); 
}); 
form.parse(req);