zoukankan      html  css  js  c++  java
  • idhttp+tidmultpartfromdatastream

    参阅: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;
  • 相关阅读:
    使用DevExpress 控件开发通用查询控件(Winform)
    SQL 排序函数
    SQL Server 消除科学计数法
    Excel VBA 的GetOpenFilename 方法
    分布式定时任务利用分布式定时任务框架xxljob实现任务动态发布
    java 同时启动多个项目
    Jooq配置与使用
    java 线上诊断工具arthas使用记录及k8s使用
    k8s脚本
    输入汉字获得拼音(VB.net)
  • 原文地址:https://www.cnblogs.com/suhq/p/13175147.html
Copyright © 2011-2022 走看看