Übertragen Sie hochgeladene Dateien mit Node in den Azure-Blob-Speicher

Mit Express with Node kann ich eine Datei erfolgreich hochladen und im folgenden Codeblock an den Azure-Speicher übergeben.

app.get('/upload', function (req, res) {
    res.send(
    '<form action="/upload" method="post" enctype="multipart/form-data">' +
    '<input type="file" name="snapshot" />' +
    '<input type="submit" value="Upload" />' +
    '</form>'
    );
});

app.post('/upload', function (req, res) {
    var path = req.files.snapshot.path;
    var bs= azure.createBlobService();
    bs.createBlockBlobFromFile('c', 'test.png', path, function (error) { });
    res.send("OK");
});

Dies funktioniert einwandfrei, aber Express erstellt eine temporäre Datei und speichert das Bild zuerst. Anschließend lade ich es aus der Datei in Azure hoch. Dies scheint ein ineffizienter und unnötiger Schritt in dem Prozess zu sein, und am Ende muss ich die Bereinigung des temporären Dateiverzeichnisses verwalten.

Ich sollte in der Lage sein, die Datei mit dem direkt an Azure-Speicher zu streamenblobService.createBlockBlobFromStream Methode im Azure SDK, aber ich kenne mich mit Node oder Express nicht gut genug aus, um zu verstehen, wie auf die Streamdaten zugegriffen wird.

app.post('/upload', function (req, res) {

    var stream = /// WHAT GOES HERE ?? ///

    var bs= azure.createBlobService();
    bs.createBlockBlobFromStream('c', 'test.png', stream, function (error) { });
    res.send("OK");
});

Ich habe den folgenden Blog gefunden, der darauf hinweist, dass es eine Möglichkeit gibt, dies zu tun, und sicherlich greift Express auf die Stream-Daten zu und analysiert und speichert sie auch im Dateisystem.http://blog.valeryjacobs.com/index.php/streaming-media-from-url-to-blob-storage/

Der vjacobs-Code lädt tatsächlich eine Datei von einer anderen Site herunter und leitet diesen Stream an Azure weiter. Daher bin ich mir nicht sicher, ob er an meine Situation angepasst werden kann.

Wie kann ich mithilfe von Node auf den hochgeladenen Dateistream zugreifen und ihn direkt an Azure übergeben?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage