CURL команда для JavaScript - PullRequest
0 голосов
/ 02 декабря 2018

Я получил этот запрос CURL:

curl -s -X POST "https://api.telegram.org/bot<token>/sendPhoto" -F chat_id=<chatid> -F photo="@photo.jpg"

, чтобы отправить фотографию моему телеграмму-боту.

Теперь я хотел бы перевести этот запрос в код js (используя запрос Ajax) и это то, что я получил до сих пор:

let token = "yourBotToken",
  chatId = "yourUserChatId";

$("#fileInput").on('change', function() {
  let data = this.files[0];
  console.log(data)
  $.ajax({
    url: `https://api.telegram.org/bot${token}/sendPhoto?chat_id=${chatId}`,
    type: "POST",
    processData: false,
    contentType: false,
    data: data,
    success: function(data) {
      console.log("SUCCESS");
      console.log(arguments)
    },
    error: function() {
      console.log("ERROR");
      console.log(arguments)
    }
  })

})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="fileInput" type="file" />

Обратите внимание, что я получаю сообщение об ошибке ...

description: "Bad Request: there is no photo in the request"

... каждый раз из телеграммы API.Как я могу исправить эту проблему и где она находится?

Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Поскольку вы не отправляете фотографию с запросом Используйте

$("#fileInput").on('change', function() { 
    let data = new FormData() ;
    data.append('photo', this.files[0]) ;
    $.ajax({ url: `https://api.telegram.org/bot${token}/sendPhoto? chat_id=${chatId}`, 
        type: "POST", 
        processData: false, 
        contentType: false, 
        data: data, 
        success: function(data) { 
            console.log("SUCCESS");
            console.log(data)
        }, 
        error: function(err) { 
            console.log("ERROR");
            console.log(err);
        } 
    });
});
0 голосов
/ 02 декабря 2018

Может быть, вам поможет пакет axios?https://github.com/delirius325/axios-curlirize

...