Search code examples
node.jsnpmnpm-request

Node file upload ends with 502 Gateway Error


I am trying to upload a file using request module to Telegram's Bot API. However, I end up with a 502 Gateway Error. Here's my code:

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);
    })
});

Is this the proper way to upload a file or am I making a mistake somewhere?


Solution

  • I suggest, it's better for you to use form field of request object, which gives you possibility to send file using createReadStream function of fs module.For example:

    var r = request.post({
            url: url
          },someHandler);
    
    var form = r.form();
    form.append('file',fs.createReadStream(filePath));
    

    For proper use read:

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