Node.js knox s3 поиск изображений - PullRequest
       44

Node.js knox s3 поиск изображений

5 голосов
/ 30 августа 2011

Я пытаюсь получить изображение из s3 в узле, используя следующее:

app.get('/photos', function(req, res, next) {
var data = '';
s3.get('/tmp/DSC_0904.jpg').on('response', function(s3res){
    console.log(s3res.statusCode);
    console.log(s3res.headers);
    s3res.setEncoding('binary');
    s3res.on('data', function(chunk){
      data += chunk;
    });
    s3res.on('end', function() {
      res.contentType('image/jpeg');
      res.send(data);
    });
  }).end();
});

Я открыт для предложений относительно того, почему это не работает.

Ответы [ 3 ]

3 голосов
/ 08 декабря 2011

Мне удалось загрузить изображение, внеся следующие изменения в обратный вызов конечного события:

s3res.on('end', function() {
    res.contentType('image/jpeg');
    res.write(data, encoding='binary')
    res.end()
});

У меня были те же проблемы, что и у исходного постера.Я подозревал, что, поскольку мы установили кодировку во входящем буфере в двоичную форму, нам нужно было сделать то же самое в выходном потоке.После некоторых исследований я нашел метод записи, который исключает тип кодирования в качестве параметра.

1 голос
/ 07 мая 2012

Возможно, вы захотите использовать AwsSum, поскольку он полностью поддерживается и поддерживается.Там также есть каталог examples /, в котором есть множество примеров Amazon S3:

Есть также пример того, что вам нужно врепозиторий node-awssum-scripts, который отделен от репозитория node-awssum:

Дайте мне знать, если вы в порядке или вам нужнолюбая помощь.Отказ от ответственности: я автор AwsSum.:)

0 голосов
/ 11 апреля 2013

Я использую это, чтобы получить мои изображения, и это работает довольно хорошо ..

//  Create the new file using fs
var new_file = fs.createWriteStream(destination_file);

//  Now grab the file from s3
aws_connection.getFile(f, function(err, res) {
    if(err) return err;

    res.on('data', function(chunk) {
        new_file.write(chunk);
    });
    res.on('end', function(chunk) {
        new_file.end();
    });
});
...