Unggah Gambar Dengan idhttp indy9 delphi7

saya ingin mengunggah gambar ke server telegram dengan kiriman tetapi saya mendapatkan kesalahan batas waktu baca atau 415 jenis media tidak didukung.

telegram mengatakan: " Foto untuk dikirim. Anda dapat meneruskan file_id sebagai String untuk mengirim ulang foto yang sudah ada di server Telegram, atau mengunggah foto baru menggunakan multipart/form-data. "

apa yang salah?

var
IDUser : String;
Stream: TStringStream;
Params: TIdMultipartFormDataStream;
msg : WideString;
LHandler: TIdSSLIOHandlerSocket;
Src , boundry : string;
begin
  API := edtAPI.Text;
  IDUser := Edit1.Text;
  Stream := TStringStream.Create('');
  try
    Params := TIdMultipartFormDataStream.Create;
    try
      //Params.AddFile('File1', 'C:\test.txt','image/png');
      Params.AddFormField('chat_id',IDUser);
      Params.AddFile('File1', 'E:\image.png','image/png');
      //Data.CopyFrom(Params,0);
      //Params.AddFormField(' test',',');
      try
        msg := '/sendPhoto';
        LHandler := TIdSSLIOHandlerSocket.Create(nil);
        //IdHTTP1.Request.ContentType := 'multipart/form-data';
        IdHTTP1.ReadTimeout := 30000;
        IdHTTP1.IOHandler:=LHandler;
        LHandler.SSLOptions.Method := sslvTLSv1;
        LHandler.SSLOptions.Mode := sslmUnassigned;
        IdHTTP1.HandleRedirects := true;
        IdHTTP1.Request.ContentType := 'multipart/form-data';

        idhttp1.Request.SetHeaders;
        memoResponse.Text :=idhttp1.Request.RawHeaders.Text;
        memoRequest.Text := BaseUrl + API + msg;
        IdHTTP1.Post(BaseUrl + API + msg, Params,Stream);
      except
        on E: Exception do
          showmessage('Error encountered during POST: ' + E.Message+ ': '
          + intToStr(IdHTTP1.Response.ResponseCode))
      end;
      ShowMessage(Stream.DataString);
    finally
      Params.Free;
    end;
  finally
    Stream.Free;
  end;

maaf untuk bahasa inggris yang buruk.


person Mehdi jafari    schedule 19.07.2016    source sumber
comment
Sulit untuk menjawabnya tanpa melihat dokumentasi API yang sebenarnya. Dapatkah Anda memberikan link? Satu-satunya masalah yang saya lihat dalam kode Anda adalah Anda mengatur Request.ContentType secara manual (Post() menanganinya untuk Anda), dan Anda memanggil Request.SetHeaders() secara langsung (jangan lakukan itu). Jika Anda ingin mencatat apa yang TIdHTTP kirim, Anda dapat melampirkan komponen TIdLog... ke TIdHTTP, seperti TIdLogEvent atau TIdLogStream.   -  person Remy Lebeau    schedule 19.07.2016
comment
Hai . tautan ini : core.telegram.org/bots/api#sendphoto   -  person Mehdi jafari    schedule 20.07.2016
comment
Saat memanggil Params.AddFile(), Anda harus menggunakan 'photo' dan bukan 'File1' sebagai nama bidang.   -  person Remy Lebeau    schedule 20.07.2016
comment
Remy Lebeau terima kasih banyak. masalah saya terpecahkan.   -  person Mehdi jafari    schedule 21.07.2016


Jawaban (1)


person    schedule
comment
Remy Lebeau terima kasih banyak. masalah saya terpecahkan. - person Mehdi jafari; 24.07.2016