Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Bloco de código
collapsefalse
CpyS2T( < cFile >, < cFolder >, [ lCompress ], [ lChangeCase ], [ nLenBuffer ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cFile

caractere

Indica o arquivo no servidor que será copiado (a partir do rootpath).

X

 


cFolder

caractere

Indica a pasta de destino na máquina onde está o SmartClient.

X

 


lCompress

lógico

Indica se o arquivo deve ser internamente compactado antes de fazer a cópia. Default = .T. (verdadeiro)

 

 



lChangeCase

lógico

Se verdadeiro (.T.

, altera o nome dos

), nomes de arquivos e pastas

para letra minúscula, e se for

serão convertidos para letras minúsculas; caso contrário, falso (.F.

não altera o nome informado. Caso não especificado, o valor padrão depende de como está configurado as chaves de ini CASESENSITIVE ou SERVERTYPE.

 

 

), não será feito nenhum ajuste no nome do arquivo informado. Valor padrão (.T.). Veja maiores informações em Observações.



nLenBuffer

numérico

Se for informado muda o tamanho padrão do fragmento do arquivo a ser enviado.
O valor deve ser informado em bytes, o valor padrão é 12288 bytes (12 Kb).



Retorno

Nome

Tipo

Descrição

lRet

lógico

Retorna verdadeiro (.T.), se o arquivo for copiado com sucesso; Retorna falso (.F.), em caso de falha na cópia.

Observações

  • 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 causas 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 <lCompress>, 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. O arquivo compactado é gravado na pasta temporária do servidor e descompactado na pasta de destino do client.
  • O parâmetro opcional lChangeCase foi introduzido a partir do build 7.00.131227A e quando pois em sistemas LINUX/UNIX, existe a diferenciação entre maiúsculo e minúsculo em nomes de arquivos ou pastas. Quando este parâmetro for informado, terá prioridade sobre o comportamento de CASE SENSITIVE definido pela chave Case Sensitive definido pelas chaves de ini CASESENSITIVE ou SERVERTYPE. Porem, quando não especificado o parâmetro, o valor padrão (.T.) fica condicionado ao que está configurado nessas chaves.
  • 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 Mac como "/user/local/temp/".
  • O parâmetro nLenBuffer está disponível a partir do build 20.3.2.9, a alteração do seu valor pode aumentar e/ou diminuir o consumo de memória baseado no tamanho do buffer, assim com também interferirá na taxa de transmissão do arquivo.
    Buffers maiores tendem a ter uma taxa de transmissão maior, porém são mais suscetíveis as intempéries da rede, o tamanho do buffer de
    ve ser avaliado na infraestrutura na qual ele está em uso, pois pode gerar falhas na transmissão. O comportamento padrão pode ser alterado pela configuração FileCopyOne.

Exemplos

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
// Copia arquivos do servidor para o remote local, compactando antes de transmitir
bOk := CpyS2T( "\BKP\MANUAL.DOC", "C:\TEMP" )

// Copia arquivos do servidor para o remote local, sem compactar antes de transmitir
bOk := CpyS2T( "\BKP\MANUAL.DOC", "C:\TEMP", .F. )

...