Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 392 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Pessoal, bom dia!

Preciso fazer upload de arquivos via api. Para api passo os seguintes parametros: eTipoRotinaArquivo, SubPasta e Arquivo.  

A função abaixo funciona perfeitamente no Delphi 10.4, mas no delphi seatle não funciona, pois ele não possui addfile no RESTRequest, gostaria de saber se tem alguma forma de resolver isso.

//Função funcionando no delphi 10.4

function enviarreceberS3(Metodo, Tipo, extArq, sURL, sToken, sOrigem, sDestino, sNomeArquivo: AnsiString; Memo : TMemo): Integer;
var iRetorno: Integer;
    sURLDownload, sDirDownload: String;
    vRestClient   : TRESTClient;
    vRestResponse : TRESTResponse;
    vRestRequest  : TRESTRequest;
    Enco_dedc : String;
    vJason : String;
begin
  {//Metodo
    0.    GET
    1.    PUT
    2.  POST
  }

  vRestClient   := TRESTClient.Create(nil);
  vRestResponse := TRESTResponse.Create(nil);
  vRestRequest  := TRESTRequest.Create(nil);
  try
    try
      vRestClient.Accept         := 'application/json, text/plain; q=0.9, text/html;q=0.8';
      vRestClient.ContentType    := 'application/json;odata=verbose;charset=utf-8';
      vRestClient.AcceptCharset  := 'UTF-8, *;q=0.8';
      vRestClient.AcceptEncoding := 'identity';
      vRestClient.AcceptEncoding := 'deflate, gzip, *;q=0';

      vRestRequest.Client        := vRestClient;
      vRestRequest.Accept        := 'application/json';

      vRestRequest.Response      := vRestResponse;
      vRestClient.BaseURL        := UTF8ToUnicodeString(sURL); //'https://minhaapihomologacao.empresa.com.br/api/v1/arquivo'


      vRestRequest.AddAuthParameter(
      'Authorization',
      'Bearer ' + UTF8ToUnicodeString(sToken),
      TRESTRequestParameterKind.pkHTTPHEADER);

      case strtoint(Metodo) of
      0 : vRestRequest.Method        := rmGET;
      1 : vRestRequest.Method        := rmPUT;
      2 : vRestRequest.Method        := rmPOST;
      end;


      if metodo = '0' then
      else begin

        vRestRequest.AddParameter('eTipoRotinaArquivo','4');
        vRestRequest.AddParameter('SubPasta','SubPastaTeste');
        vRestRequest.AddFile('Arquivo',sOrigem);  //Delphi Seatle não tem addfile

      end;

      vRestRequest.Execute;

      if (vRestResponse.StatusCode = 200) then
      begin

        sURLDownload := ReplaceStr(vRestResponse.JSONText,'"','');

        memo.Text := ReplaceStr(vRestResponse.JSONText,'"','');

        if Metodo = '0' then
        begin
          sURLDownload := ReplaceStr(sURLDownload,'\','');

          if not DirectoryExists(sDestino) then
            ForceDirectories(sDestino);
          //sDirDownload := UTF8ToUnicodeString(sDestino)+UTF8ToUnicodeString(sNomeArquivo);
          sDirDownload := UTF8ToUnicodeString(sDestino)+UTF8ToUnicodeString(sNomeArquivo);
          iRetorno:= UrlDownloadToFile(nil, PChar(sURLDownload), PChar(sDirDownload), 0, nil);
          Result:= iRetorno;
        end;

        Result:= iRetorno;
      end
      else
        Result:= 1;

    except on E: Exception do
      begin
        Result := -1;
      end;
    end;
  finally
    FreeAndNil(vRestClient);
    FreeAndNil(vRestResponse);
    FreeAndNil(vRestRequest);
  end;
end;
 

Desde ja agradeço

  • Este tópico foi criado há 392 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...