【问题标题】:How to make http put request with zip file in nodejs如何在nodejs中使用zip文件发出http put请求
【发布时间】:2015-06-14 16:45:59
【问题描述】:

我想用二进制的 zip 文件向 Web api 发出一个 http PUT 请求,并用 http 状态代码获得响应。

如何读取文件并用二进制PUT?

感谢您的帮助!!

【问题讨论】:

  • 它可以通过 http-request 模块找到。 http.put({ url: '', reqBody: fs.createReadStream('aa.zip'), headers: {'Content-Type':'application/zip'} }, function (err, res) { if (err ) { console.error(err); return; } console.log(res.code, res.headers); });

标签: node.js http-request


【解决方案1】:

你可以从这个开始:

var http = require('http');
var fs   = require('fs');

var req = http.request({
  hostname : HOSTNAME,
  port     : PORT,
  path     : UPLOAD_PATH,
  method   : 'PUT',
});

fs.createReadStream('somefile.zip').pipe(req);

您可能需要执行一些其他操作,例如正确的错误处理、设置Content-Type 标头等。

【讨论】:

  • fs.createReadStream('somefile.zip').pipe(req);如何提出 put 请求?
  • var stream = fs.createReadStream('somefile.zip').pipe(req);
  • req.on('error', function(e) { console.log('problem with request: ' + e.message); });
  • fs.createReadStream('aaa.zip').pipe(request.put(options, function(err, res, data) { if(err) console.log('err: ' + err ); 否则 console.log(data); }));但它显示:您提供的标头暗示未实现的功能..但我没有在选项中设置任何标头,它仅包含 uri:var options = { uri:'aaa.zzz'};
  • @KevingoTsai http.request() 在您通过管道传输文件时发出 PUT 请求。您似乎正在使用 request 模块,这很好,但它的工作方式(有点)不同于我正在使用的普通 http 模块。至于标头,它真的取决于 API 实现的确切语义。也许它需要设置某些标题,我不知道。
【解决方案2】:

使用request-promise(基于bluebird)

const fs = require('fs');
const request = require('request-promise');

const options = {
    method: 'PUT',
    url: 'dest url',
    qs: {key: 'value'}, // optional 
    headers: {
        'content-type': 'application/octet-stream'
    }
};

fs.createReadStream(zipFilePath).pipe(request(options)).then(body =>{
        console.log(body);
    })
    .catch(err => {
        console.log(err);
    });

【讨论】:

    【解决方案3】:

    检查answer。

    唯一的区别是,您使用的是.put() 而不是.post()。

    【讨论】:

      猜你喜欢
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多