2017-06-08 7 views
0

Ich habe eine Node.js App. In dieser App kann ein Benutzer eine Datei hochladen.Knoten - Konvertieren von Dateidaten in einen Stream

const multer = require('multer') 
const upload = multer({ dest: 'uploads/' }) 

app.put('/files/upload', upload.single('myFile'), function(req, res) { 
    let fileData = req.body['myFile']; 
    if (fileData) { 
    let commaIndex = fileData.indexOf(','); 
    if (commaIndex !== -1) { 
     fileData = fileData.substr(commaIndex+1); 

     // Convert file data to stream here... 
    } 
    } 
}); 

Ich versuche, herauszufinden, wie die fileData in einen Stream zu konvertieren. Ich möchte einen Stream, weil ich versuche, die Datei in Azure Storage hochzuladen. Die API, die ich verwenden möchte ([createFileFromStream][1]), benötigt einen Stream.

Vielen Dank!

+0

Duplizieren von https://stackoverflow.com/questions/18317904/stream-uploaded-file-to-azure-blob-storage-with-node? – qux

+0

@qux Ich sehe nicht, wie das ein Duplikat ist. Ich habe gerade diese Frage überprüft und ich glaube, dass mein Ansatz anders ist. – user70192

Antwort

0

Die Funktion, die Sie verwenden möchten, ist fs.createReadStream(), mit der Sie eine Datei aus dem Dateipfad streamen können. Und dann können Sie die Funktion createWriteStreamToBlockBlob verwenden, um einen Stream in Azure Storage hochzuladen.

Beispiel:

const express = require('express') 
const multer = require('multer') 
const upload = multer({ dest: 'uploads/' }) 
const fs = require('fs') 
const azure = require('azure-storage') 

const app = express() 

const accountName = "yourAccountName" 
const accessKey = "yourAccessKey" 
const blobSvc = azure.createBlobService(accountName, accessKey) 

app.post('/files/upload', upload.single('myFile'), function(req, res) { 
    fs.createReadStream(req.file.path).pipe(blobSvc.createWriteStreamToBlockBlob('mycontainer', req.file.originalname, function() { 
    res.send('Upload completed!') 
    })) 

}) 
Verwandte Themen