【问题标题】:Upload photo to Tumblr API with nodejs and request module使用 nodejs 和请求模块将照片上传到 Tumblr API
【发布时间】:2015-07-14 10:37:40
【问题描述】:

所以我想使用 npm 请求模块将图像上传到 Tumblr API。 熟悉 facebook 和 twitter API,这些请求的工作方式如下:

对于 Facebook:
- 创建一个读取流:var media = fs.createReadStrem('imgpath');
- 使用访问数据和 uri 集发出发布请求,并且:

options.formData = {
  source: media,
  caption: "test"
};

对于推特:
- 创建读取流
- 上传图片到推特:

options.formData = {
  media: media
};

这完美无缺。
但是现在使用 Tumblr,我需要先将图像编码为 "Array (URL-encoded binary contents)"

所以我的问题是。如何对其进行编码并将其以正确的格式提供给 npm 请求模块。为此,我首先需要使用 fs.readFileSync 加载图像,但是是否可以像使用 FB 和 Twitter 一样将图像作为 readStream 上传到 Tumblr?

这是我尝试过的事情之一:

var img = fs.readFileSync('img');  
options.form = { 
  type: 'photo',
  data: [img.toString('binary')]
}  

这给了我一个 400:上传照片时出错。

我还研究了tumblrwks,它很有效,但我真的很想用request 完成这项工作

谢谢! :)

【问题讨论】:

    标签: node.js request tumblr npm-request


    【解决方案1】:

    如果您被限制使用请求,则可以使用以下代码将数据转换为十六进制

    encodeToHex = require('./encode-image').encodeToHex;
    var photo = fs.readFileSync('./test/img/P1010486.jpg');
    
    options.form = { 
      type: 'photo',
      data: encodeToHex(photo),
    }  
    

    编码图像由 tumblrwks 自己使用

    【讨论】:

    • encode-image 中的 encodeToHex 函数基本上是这样做的: var encodeToHex = function(buffer) { return "data:" + (buffer.toString('binary')); };我也尝试过,但 tumblr 仍然以相同的错误响应。
    • @instance 如果您在 /lib/tumblrwks.js 文件中看到 tumblrwks nodejs 的代码,它会将图像文件附加到 oa 对象,并向该对象添加某些身份验证参数。
    猜你喜欢
    • 2012-03-12
    • 1970-01-01
    • 2011-02-03
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多