Поток zip-файла в nodejs - PullRequest
       7

Поток zip-файла в nodejs

0 голосов
/ 07 сентября 2018

Я ищу решение для потоковой передачи моего zip-файла, чтобы отправить его в хранилище BLOB-объектов Azure. На данный момент это то, что у меня есть

async _uploadStreamToBlob(zipFile, fileName) {
    const blobService = await this.__self.blobStorage.createBlobService(this.__self.blobStorageConnectionString);
    const containerName = this.__self.blobContainerName;

    const sourceFilePath = `${path.resolve(zipFile)}`;
    const streamSource = fs.createReadStream(sourceFilePath);
    return new Promise((resolve, reject) => {
        streamSource.pipe(blobService.createWriteStreamToBlockBlob(containerName, fileName, error => {
            if (error) {
                reject(error);
            } else {
                resolve({ message: `Upload of '${fileName}' complete` });
            }
        }));
    });
};

Это явно не работает, как я проверял иначе, так как fileStream подает нулевой байт в канал, что приводит к успешной загрузке 0-байтового zipFile в хранилище BLOB-объектов. Как мне передать поток zipFile на azureWriteStream? Или как мне получить байты из zipFile (сохраняя содержимое)? Если есть какой-то другой способ достичь этого, я весь в ушах. Спасибо

1 Ответ

0 голосов
/ 11 сентября 2018

Используйте createBlockBlobFromLocalFile напрямую:

blobService.createBlockBlobFromLocalFile(containerName, fileName, sourceFilePath, (err) => {
    // Handle err
});
...