Pergunta
· Abr. 26

Como transferir um arquivo que se encontra em um computador remoto para o servidor onde está instalado o IRIS, através de CSP?

Oi Pessoal,

Por favor,

Gostaria de um exemplo de código csp para tranferir um arquivo xml, txt, csp para o servidor onde se encontra instalado o IRIS.

Obrigado,

Edilson

Product version: IRIS 2024.3
Discussão (3)3
Entre ou crie uma conta para continuar

Oi Edilson, 

Você quer fazer isso através de uma página CSP? É isso ??? 
De qualquer forma o servidor IRIS vai precisar ter acesso ao local/pasta onde o arquivo está.

Não tenho código pronto para compartilhar, mas tenho algumas idéias que podem ser úteis.

Em um ambiente windows você pode efetuar essa transferencia como uma cópia do arquivo se a pasta estiver mapeada no servidor do IRIS. É uma opção. Veja como trabalhar com o objeto %File . Você poderá manipular o arquivo a partir de um método criado no IRIS. 

Outra maneira é usando FTP , desde que você consiga estabelecer uma sessão com um servidor FTP de dentro do InterSystems IRIS. 

Você também pode enviar o conteúdo do arquivo (file stream/binário) como entrada para algum serviço ou API criada no IRIS para receber este tipo de dado e efetuar o salvamento local. Para essa opção o servidor de origem do arquivo deverá acionar o serviço do IRIS submetendo o conteúdo como parâmetro. Ou ainda através de uma produção de interoperabilidade utilizando o  File Inbound Adapter

Espero que ajude.  

Olá Edilson, você pode fazer o upload de arquivo através de um página CSP, utilizando um input do tipo file e fazendo o submit do arquivo e depois salva a stream no servidor utilizando a classe %File. Abaixo um exemplo, pode ter erro pois não executei.

Class cjs.UlpoadArquivo Extends %CSP.Page
{

ClassMethod OnPage() As %Status
{
  &HTML<
    <form method="post" enctype="multipart/form-data">
      <input type="file" name="file" />
      <input type="submit" />
    </form>
  >
  Return $System.Status.OK()
}

ClassMethod OnPreHTTP() As %Boolean [ ServerOnly = 1 ]
{
  #Dim %request As %CSP.Request = %request
  If (%request.Method = "POST" && %request.GetMimeData("file"))
  {
    #Dim arquivo As %File = ##Class(%File).%New("<caminho/nomeArquivo>")
    #Dim statusCode As %Status = arquivo.Open("NWS")
    If ($System.Status.IsError(statusCode))
    {
      #Dim mensagemErro As %String = $System.Status.GetErrorText(statusCode)
      &HTML<
        <span>Erro ao criar arqvuio #(mesnagemErro)# </span>
      >
      Return $System.Status.OK()
    }
    Set statuCode = arquivo.CopyForm(%request.GetMimeData("file"))
    If ($System.Status.IsError(statusCode))
    {
      Set mensagemErro = $System.Status.GetErrorText(statusCode)
      &HTML<
        <span>Erro ao salvar arqvuio #(mesnagemErro)# </span>
      >
      Return $System.Status.OK()
    }
    Do arquivo.Close()
    &HTML<
       <span>Arquivo carregado para o servidor com sucesso.</span>
    >
  }
  Return $System.Status.OK()
}