Файл загрузки npm azure-storage как base64 - PullRequest
0 голосов
/ 07 июня 2018

Я использую этот пакет , чтобы загрузить файл из лазури на сервер локального узла.Но я не хочу сохранять файл на локальном сервере, а затем читать его для преобразования в base64, я хочу напрямую преобразовать его в base64.Как мне этого добиться?

 this.blobService.getBlobToStream('pictures', path, fs.createWriteStream(`./src/temp/${filename}.jpeg`), function(error, result, response) {
                if (!error) {
                    resolve({ message: `Items in container pictures:`, data: result});
                } else {
                    reject(error);
                }
            });

1 Ответ

0 голосов
/ 13 июня 2018

Встроенный узел поддерживает только ecnode Buffer type для base64, так как вы не хотите загружать BLOB-объекты на локальный сервер, вы должны использовать внешний модуль для кодирования stream.

npm install base64-stream, затем используйте приведенный ниже код.

var base64 = require('base64-stream');
...
this.blobService.createReadStream(container, path).pipe(base64.encode()).pipe(res);

Обратите внимание, что в своем последующем вопросе вы указываете Content-Type, используя

res.header('Content-Type', properties['contentType']);

Content-Type настройка должна быть опущена.В моем тесте, если установить Content-Type успешно, изображение будет загружено как вложение, а не как встроенный контент.Ваш код успешен, потому что он на самом деле устанавливает Content-Type в undefined.

Используемые вами свойства - это BlobResult (формат Json) с информацией о BLOB-объектах

BlobResult {
  container: xxx,
  ...
  contentSettings:
   { contentType: 'image/jpg',
     contentMD5: 'uNkt2WJ75X13TjQbfY7qkA==' },
  ... 
}

Так что contentType следует использовать в этом формате properties.contentSettings.contentType

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...