【问题标题】:npm streaming-s3, streaming an image from request.get()npm streaming-s3,从 request.get() 流式传输图像
【发布时间】:2014-12-10 02:02:24
【问题描述】:

我正在测试streaming-s3 package,并尝试从请求中上传基本教程。开始工作。

目前,它一直卡住,永远不会启动、崩溃或任何事情......

我的代码:

var elem = list.shift();
  console.log(elem._id+" "+elem.main_img); //elem contains exactly what it should
  var rStream = request.get(elem.main_img);
  uploader = new StreamingS3(rStream, {accessKeyId:'XXXXXX', secretAccessKey:'XXXXXXX',region:"eu-west-1"},
    {
      Bucket: 'xxxxxx-myimages',
      Key: elem._id,
      ContentType: 'image/jpeg',
      ACL:'public-read'
    },
    {
      concurrentParts: 2,
      waitTime: 10000,
      retries: 1,
      maxPartSize: 10*1024*1024,
    }
  );

  uploader.begin(); // important if callback not provided.

  uploader.on('data', function (bytesRead) {
    console.log(bytesRead, ' bytes read.');
  }).on('part', function (number) {
    console.log('Part ', number, ' uploaded.');
  }).on('uploaded', function (stats) {
    console.log('Upload stats: ', stats);
  }).on('finished', function (resp, stats) {
    console.log('Upload finished: ', resp);
  }).on('error', function (e) {
    console.log('Upload error: ', e);
  });

它基本上是一个空白填充的复制粘贴...是什么导致它无法工作并且不显示任何输出?我检查了请求,它回复了 200 statusCode。 Console.log 上传者显示所有内容都正确填写...

【问题讨论】:

    标签: node.js amazon-s3 stream


    【解决方案1】:

    您确定所有内容都设置在该列表中吗?这是file I've just uploaded 的控制台输出:

    node temp
    123 http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=3c6263c3453b
    16902 ' bytes read.'
    2543 ' bytes read.'
    Part  1  uploaded.
    Upload stats:  { downloadSpeed: Infinity,
      uploadSpeed: 9722500,
      downloadTime: 0,
      uploadTime: 2,
      size: 19445 }
    Upload finished:  { Location: 'https://zlatko-test.s3.amazonaws.com/123',
      Bucket: 'zlatko-test',
      Key: '123',
      ETag: '"de7139567df95ed9dacadfc5a3a1317c-1"' }
    

    这是我修改文件的方式,基本上是添加一个静态元素并更改要从我的 shell 获取的访问信息:

    var list = [{main_img: 'http://cdn.sstatic.net/stackoverflow/img/sprites.png?v=3c6263c3453b', _id: '123'}];
    
    var request = require('request');
    var StreamingS3 = require('streaming-s3');
    var elem = list.shift();
    console.log(elem._id+" "+elem.main_img); //elem contains exactly what it should
    var rStream = request.get(elem.main_img);
    uploader = new StreamingS3(rStream, {accessKeyId:process.env.S3_ACCESS_KEY, secretAccessKey:process.env.S3_SECRET,region:process.env.S3_REGION},
        {
            Bucket: process.env.S3_BUCKET,
            Key: elem._id,
            ContentType: 'image/jpeg',
            ACL:'public-read'
        },
        {
            concurrentParts: 2,
            waitTime: 10000,
            retries: 1,
            maxPartSize: 10*1024*1024,
        }
    );
    
    uploader.begin(); // important if callback not provided.
    
    uploader.on('data', function (bytesRead) {
        console.log(bytesRead, ' bytes read.');
    }).on('part', function (number) {
        console.log('Part ', number, ' uploaded.');
    }).on('uploaded', function (stats) {
        console.log('Upload stats: ', stats);
    }).on('finished', function (resp, stats) {
        console.log('Upload finished: ', resp);
    }).on('error', function (e) {
        console.log('Upload error: ', e);
    });
    

    你在窗户上还是什么的?

    【讨论】:

    • 不,Unix...奇怪,我在使用 knox S3 库时遇到了类似的问题,当我使用 http 模块而不是请求时,两者都消失了... http.get 流到 s3,而不是请求.get.
    • 什么版本的请求?
    • 嗯,我从 npm 获得了最新信息。我修改后的程序对你有用吗?也许尝试一下,然后逐行更改以查看它在哪里中断。首先设置 ENV 变量,例如 S3_BUCKET=mybucket S3_ACCESS_KEY=xxxxxxx S3_SECRET=xxxxxxx S3_REGION=us-east-1 node script.js
    猜你喜欢
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 2010-11-14
    • 2018-12-15
    • 2014-11-11
    相关资源
    最近更新 更多