【问题标题】:Node - Converting file data to a Stream节点 - 将文件数据转换为流
【发布时间】:2017-11-10 13:15:40
【问题描述】:

我有一个 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]) 需要一个流。

谢谢!

【问题讨论】:

标签: node.js azure azure-storage-files


【解决方案1】:

您想要使用的函数是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!')  
  }))

})

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2010-10-18
  • 2014-09-04
  • 2014-11-08
  • 2014-07-16
  • 1970-01-01
  • 2018-01-02
相关资源
最近更新 更多