【问题标题】:PUT binary data to a remote serverPUT二进制数据到远程服务器
【发布时间】:2014-02-21 19:23:57
【问题描述】:

我要做的是将这个curl 命令翻译成Node.js 代码

curl -X PUT -H "Content-Type:" --data-binary @slug.tgz "https://s3-external-1.amazonaws.com/herokuslugs/heroku.com/v1/xyz"

我一直在摆弄 Node 的内置 https.requestrequest 库一个多小时,但仍然没有弄明白。

【问题讨论】:

    标签: node.js


    【解决方案1】:

    以下代码对我有用

    var options = {
            url: <url>,
            method: "PUT",
        };
    
        fs.createReadStream(file_path).pipe(
            request(options, (err, response) => {
                console.log(response.statusCode);
                var body = JSON.parse(response.body);
            })
        )
    

    【讨论】:

      【解决方案2】:

      我之前遇到过这个问题。我通过将fs.createReadStream 更改为fs.readFile 来实现它。这是我所做的快速示例。

      fs.readFile('@slug.tgz', function (err, data) {
        if (err) return console.error(err);
      
        options = {
          url: 'https://s3-external-1.amazonaws.com/herokuslugs/heroku.com/v1/xyz',
          body: data
        }
      
        request.put(options, function (err, message, data) {
          if (err) return console.error(err);
      
          console.log(data)
        });
      });
      

      当我使用fs.createReadStream 时,我收到了来自亚马逊的错误。还要确保首先通过 platfrom API 创建一个 slug,并在响应中使用博客中的 url

      【讨论】:

      • 我想知道为什么会这样,createReadStream 有什么问题
      【解决方案3】:
      curl -X PUT -H "Content-Type:" --data-binary @slug.tgz "https://s3-external-1.amazonaws.com/herokuslugs/heroku.com/v1/xyz"
      

      我不确定这是否有效,但这是我首先要尝试的 (the third example in the request docs):

      fs.createReadStream('@slug.tgz').pipe(request.put('https://s3-external-1.amazonaws.com/herokuslugs/heroku.com/v1/xyz'))
      

      您可能还想使用亚马逊的 official node library,正如我在 this answer 中演示的那样

      【讨论】:

      • 我收到了{ [Error: write EPIPE] code: 'EPIPE', errno: 'EPIPE', syscall: 'write' } 错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 2020-08-15
      • 2011-07-21
      相关资源
      最近更新 更多