0

我有一个 Node.js 应用程序。在该应用程序中,用户可以上传文件。

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...
    }
  }
});

我试图弄清楚如何将其转换fileData为流。我想要一个流的原因是因为我正在尝试将文件上传到 Azure 存储。我尝试使用的 API ( [createFileFromStream][1]) 需要一个流。

谢谢!

4

1 回答 1

2

您想要使用的功能是fs.createReadStream()允许您从文件路径读取文件以进行流式传输。然后您可以使用createWriteStreamToBlockBlob函数将流上传到 Azure 存储。

例子:

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!')  
  }))

})
于 2017-06-09T05:44:22.653 回答