CpyS2T [AS]

CpyS2T [AS]
Author: Eurai
Inclusão: 01/01/2016
Alteração: 01/01/2016

Descrição

Copia um arquivo do ambiente do servidor, a partir do rootpath, para um diretório na máquina onde está sendo executado o SmartClient..

 

Sintaxe

CpyS2T( <cFile>, <cFolder>, <lCompress>, <lChangeCase> )

 

Parâmetros


Par Nome Tipo Descrição Default Obg Ref
01
cFile
Caracter
Indica o arquivo no servidor que será copiado (a partir do rootpath)
  X  
02 cFolder
Caracter
Indica a pasta de destino na máquina onde está o SmartClient
  X  
03 lCompress
Boolean Indica se o arquivo deve ser internamente compactado antes de fazer a cópia
.T.    
04 lChangeCase
Boolean
Indica se colocará o nome do diretório em letra minúscula
     

 

Retorno

Retorno Tipo Descrição
lRet Boolean
Retorna verdadeiro (.T.), se o arquivo for copiado com sucesso; Retorna falso (.F.), em caso de falha na cópia

 

Exemplo

#INCLUDE "TOTVS.CH"
 
User Function CpyS2T()
 
If CpyS2T( "\system\SX3010.DTC", "C:\TEMP" )
 Conout( 'Copiado com Sucesso' )
Endif
 
Return( Nil )

Resultado
cpys2t_-_resultado_01                                       

 

 

Informações adicionais

A função CpyS2T exige que o programa AdvPL que a execute seja um SmartClient, não permitindo, portanto, que seja chamada em JOB. A partir da build 7.00.120420A, caso a função seja chamada em JOB, o programa será finalizado com ocorrência de erro fatal "Function CpyS2T() doesn't available in JOB.". Nas builds anteriores, se CpyS2T fosse chamada em JOB, ela não era executada e não gerava mensagem de advertência ou ocorrência de erro

O diretório no destino (client) deve existir para que a cópia seja realizada com sucesso.

Em caso de falha, pode ser utilizada a função FError, porém não é possível saber se a falha na cópia está relacionada com algum problema de acesso na origem, no destino, ou mesmo durante a cópia. Normalmente as casas mais prováveis de falha são inconsistências nos parâmetros, como especificar um arquivo de origem que não existe, ou que esteja em uso por outro processo; ou especificar um diretório de destino que não exista, ou que o usuário que iniciou o programa não tenha direitos de escrita, falta de espaço em disco no destino durante a cópia, falha no acesso ao sistema de arquivos na pasta temporária do servidor ou do SmartClient, ou ainda o arquivo já exista no diretório de destino, e esteja em uso por outro processo

Caso a compactação esteja habilitada (Default = .T.), no parâmetro , o arquivo será compactado automaticamente no servidor antes do envio, e descompactado automaticamente no Client. Para a grande parte dos tipos de arquivo, utilizar a compactação reduz o tempo de cópia, pois o conteúdo trafegado pela rede é menor. Para tráfego de arquivos que já possuem algum tipo de compressão de dados (ZIP, TAR, RAR, JPG, MPG), é mais eficiente especificar este parâmetro com .F., para que a compactação automática não seja utilizada, pois nestes casos a mesma não agregará nenhum ganho neste processo

Os caminhos de cFile e cFolder será convertido para letra minúscula. A partir da build 7.00.121227A, o caminho não será convertido para letra minúscula para Logix

A partir da build 7.00.120420A, o comportamento de mudança para letra minúscula, para Linux, pode ser alterado modificando o valor da chave CaseSensitive, na seção General, do arquivo ini do TOTVS | Application Server. Essa mudança impacta outras funções que também tratam arquivos

A partir da build 7.00.131227A foi criado o parâmetro lChangeCase, que se for definido com o valor .T., altera o nome dos arquivos e pastas para letra minúscula, e se for .F. não altera o nome informado. O valor padrão do parâmetro é .T…

Em ambiente Windows, os nomes de arquivos e pastas não possuem diferenciação entre maiúsculo e minúsculo, logo, a função conseguirá tratar os arquivos e pastas independente do valor definido no parâmetro lChangeCase. Em ambiente Linux ou Mac, os nomes dos arquivos e pastas respeitam a diferenciação

Quando o SmartClient utilizado for uma build nativa Linux ou Mac, sabe-se que sistema de arquivos destas plataformas não têm unidade de disco, a nomenclatura dos arquivos é case sensitive (letras minúsculas diferente de maiúsculas), e as barras separadoras de diretório / pasta são barras normais "/" ao invés de barras inversas "\". Mesmo nestes casos, deve-se especificar uma letra de unidade de disco no diretório de destino; pois quando o SmartClient em Linux e/ou Mac receber o diretório de destino, com a unidade de disco especificada, a unidade de disco será ignorada e as barras serão internamente invertidas. Por exemplo, a cópia especificando o path de destino "C:\USER\LOCAL\TEMP\" será interpretado pelo SmartClient Linux e/ou Max como "/user/local/temp/"

 

 

 

 

 

Gostou? Compartilhe com seus amigos e deixe um comentário! 😎  

 

 

 

 

 

 

 

Esse conteúdo te ajudou? Ajude o canal com doação
Compartilhar
Comentários