Как передать Windows Azure Blob на клиент с помощью Node.js? - PullRequest
2 голосов
/ 17 февраля 2012

Я хотел бы отправить Windows Azure Blob (изображение) непосредственно клиенту;Я пытаюсь это:

    blobService.getBlobToStream('images', req.url, res, function(err, blob) {
    if (!err) {
        res.writeHead(200, { 'Content-Type': blob.contentType });
    } else {
        res.writeHead(200, { 'Content-Type': 'text/plain' });
        res.end(err);
    }
});

Я пытаюсь передать поток Blob напрямую потоку ответов;это должно работать?В Firefox я получаю сообщение: «Изображение не может быть отображено, поскольку оно содержит ошибки».Глядя на Firebug, размер изображения равен 0.

Ответы [ 2 ]

5 голосов
/ 17 февраля 2012

Мне кажется, что это работает идеально (если это поможет?):

var azure = require('azure');
var http = require('http');
http.createServer(function (req, res) {
    var blobService = azure.createBlobService("xxx", "yyy", "blob.core.windows.net").withFilter(new azure.ExponentialRetryPolicyFilter());
    blobService.getBlobToStream('container', 'image.png', res, function(error){
        if(!error){
            res.writeHead(200, {'Content-Type': 'image/png'});
            res.end();
        }
        else
        {
            console.log('error');
            console.log(error);
            res.end();
        }
    });
}).listen(8080, "127.0.0.1");

Обновление

Просто понял.req.url будет иметь начальную косую черту (/).То, что я предполагаю, не будет соответствовать вашему имени файла изображения.

0 голосов
/ 28 декабря 2018

При использовании azure-storage@2.10.2 я получал ошибки при записи ответа после его окончательной доработки. Я также заметил, что getBlobToStream автоматически обрабатывает тип контента.

const storage = require('azure-storage');
const blobService = storage.createBlobService(azureStorage.account, azureStorage.key); // if you want aren't using the same azure env vars

blobService.getBlobToStream(config.switchConfigStorage.container, 'image.png', res, function(error, blob){
  if(!error){ // blob retrieved
    console.log(blob); // good for debugging and possibly more processing
    res.end(); // no need to writeHead
  }else{
    console.log(error);
    res.end();
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...