【问题标题】:best way to POST an image in node?在节点中发布图像的最佳方法?
【发布时间】:2015-12-31 00:04:13
【问题描述】:

在节点中将一些图像上传到服务并捕获响应的最佳方式是什么?

我想上传一些类似的图片

curl -F media=@$MEDIAFILE $URL

会的。

我让request library 使用流和管道,但我看不到如何捕获输出/响应。

// define a read stream from our source file
var inFile = 'media/uploads/images/abby.jpg';
var source = fs.createReadStream(inFile);

// pipe data to POST request
source.pipe(request.post(wcUrl)
    .on('error', function(error){
        console.log("ERROR:", error);
    })
    .on('response', function(response, p1, p2){
        console.log(Object.keys(response));
        console.log('headers', response.headers);
        console.log('statusCode', response.statusCode);
        console.log('body', response.body);
    })

);

我可以看到 statusCode 是 200 响应 OK,但无法获取响应正文。返回的字段似乎都没有有用的数据。

[ '_readableState',
  'readable',
  'domain',
  '_events',
  '_eventsCount',
  '_maxListeners',
  'socket',
  'connection',
  'httpVersionMajor',
  'httpVersionMinor',
  'httpVersion',
  'complete',
  'headers',
  'rawHeaders',
  'trailers',
  'rawTrailers',
  'upgrade',
  'url',
  'method',
  'statusCode',
  'statusMessage',
  'client',
  '_consuming',
  '_dumped',
  'req',
  'request',
  'toJSON',
  'caseless' ]
headers { server: 'nginx/1.8.0',
  date: 'Thu, 31 Dec 2015 00:00:34 GMT',
  'content-type': 'text/plain',
  'content-length': '109',
  connection: 'close' }
statusCode 200
body undefined

大多数请求包示例都使用表单或多部分,而我只想发送一个简单的图像文件。 也许还有另一种更合适的节点方式来做到这一点?

【问题讨论】:

    标签: node.js image-processing request http-post


    【解决方案1】:

    啊哈,我必须在响应中嵌套另一个事件:

    .on('response', function(response, p1, p2) {
      response.on('data', function(data) {
        console.log('finalData', data.toString() );
        console.log('received ' + data.length + ' bytes of compressed data');
      });
    

    这看起来确实很复杂,所以如果有更简单的方法仍然很感兴趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多