Загруженный файл на azure имеет 0 битов - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь загрузить изображение в azure хранилище BLOB-объектов. Это удалось, но мое загруженное изображение выглядит 0 байт в моем azure хранилище BLOB-объектов.

var fs = require('fs');

const fileUpload = (req, res, next) => {
  console.log(req.files.file)
  var blobSvc = azure.createBlobService();
  var file = req.files.file.tempFilePath;
  var stream = fs.createReadStream(file)
  var dataLength = 0;
  // using a readStream that we created already
  stream
    .on('data', function (chunk) {
      dataLength += chunk.length;
    })
    .on('end', function () {
      console.log('The length was:', dataLength);
    });

  blobSvc.createBlockBlobFromStream("image", req.files.file.name, stream, dataLength, function (error, result, response) {
    if (!error) {
      console.log('ok Blob uploaded')
      console.log(result)
      console.log(response)
    } else {
      console.log(error)
    }

  })
}


module.exports = fileUpload

Вот как мой req.files.file obj получил от внешнего интерфейса.

file: {
    name: 'test.png',
    data: <Buffer >,
    size: 184332,
    encoding: '7bit',
    tempFilePath: '/tmp/tmp-1-1585187683435',
    truncated: false,
    mimetype: 'image/png',
    md5: 'b8532c65a5c1ba95bbe89b6589b94a6c',
    mv: [Function: mv]
  }

1 Ответ

0 голосов
/ 26 марта 2020

Вам не нужно указывать длину, вы можете попробовать createWriteStreamToBlockBlob .

Код будет выглядеть следующим образом:

var azure = require('azure-storage');
var blobService = azure.createBlobService();
var stream = fs.createReadStream(fileNameTarget).pipe(blobService.createWriteStreamToBlockBlob(containerName, blobName, { blockIdPrefix: 'block' }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...