参阅:https://www.cnblogs.com/ClaireWu/p/12487028.html
function xxx.UploadFile(const sAccessToken, sFile, sFileType: string):string;
var  IdHttp: TIdHTTP;  MutPartForm: TIdMultiPartFormDataStream;  Ms: TStringStream;  sTmp: string;  LStream: TIdReadFileExclusiveStream;  SSLIO: TIdSSLIOHandlerSocketOpenSSL;begin  Result := ‘‘;  try    Ms := TStringStream.Create(‘‘, TEncoding.UTF8);    IdHttp := TIdHttp.Create(nil);    IdHttp.ReadTimeout := 30000;    MutPartForm := TIdMultiPartFormDataStream.Create;    LStream := TIdReadFileExclusiveStream.Create(sFile);    SSLIO := TIdSSLIOHandlerSocketOpenSSL.Create(nil);    try      IdHttp.AllowCookies    := True;      IdHttp.HandleRedirects := True; //允许重定向      SSLIO.SSLOptions.Method:=sslvTLSv1;      SSLIO.SSLOptions.Mode := sslmClient;      IdHttp.IOHandler := SSLIO;      // Http1.1      IdHttp.HTTPOptions := IdHttp.HTTPOptions + [hoKeepOrigProtocol];      IdHttp.ProtocolVersion := pv1_1;      MutPartForm.AddObject(‘media‘, ‘application/octet-stream‘, LStream, ExtractFileName(sFile));      sTmp := Format(‘http://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=%s&type=%s‘,[sAccessToken, sFileType]);      IdHttp.Post(sTmp, MutPartForm, Ms);      Result := Ms.DataString;    finally      LStream.Free;      Ms.Free;      IdHttp.Free;      MutPartForm.Free;      SSLIO.Free;    end;  except    on E: Exception do Result := E.Message;  end;end;idhttp+tidmultpartfromdatastream
原文:https://www.cnblogs.com/suhq/p/13175147.html