0

requestモジュールを使用してTelegramBot APIにファイルをアップロードしようとしています。ただし、502 ゲートウェイ エラーが発生します。これが私のコードです:

var request = require("request");
var fs = require("fs");
fs.readFile("image.png",function(err,data){
    var formdata = {};
    formdata.chat_id = <chatid>;
    formdata.photo = data;
    if(err)
      console.log(err);
    request({
      url : "https://api.telegram.org/bot<token>/sendPhoto",
      method : "POST",
      headers : {
        "Content-Type" : "multipart/form-data"
      },
      formData : formdata
    },function(err,res,body){
        if(err)
          console.log(err)
        console.log(body);
    })
});

これはファイルをアップロードする適切な方法ですか、それともどこかで間違いを犯していますか?

4

1 に答える 1

1

fsモジュールのcreateReadStream関数を使用してファイルを送信する可能性を与える、リクエストオブジェクトのフォームフィールドを使用することをお勧めします。例:

var r = request.post({
        url: url
      },someHandler);

var form = r.form();
form.append('file',fs.createReadStream(filePath));

適切に使用するには、以下をお読みください。

https://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options https://github.com/request/request#forms

于 2015-07-02T18:55:11.610 に答える