Importante
Disponível apenas para uso com o WebApp (sem Web-Agent). Caso esteja com o Web-Agent, utilizar as funções de cópia padrão (CpyS2T, CpyT2S).
Para identificar se o Web-Agent está em uso ou não, deve-se utilizar a função GetRemoteType
Informações importantes
🚨 Função disponível somente para o WebApp, a partir da versão 9.1.x ou superior, o Application Server 20.3.2.x (Harpia) ou superior.
A função copia um arquivo entre o Servidor e a Estação de Trabalho e vice-versa.
Sintaxe
CpyF2Web( < cOrigem >, [ lIsUserDiskDir ], [ lCompactCopy ], [ lChangeCase ], [ lUnZipFile ] )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cOrigem | caractere | Indica o arquivo de origem para a cópia. Para cópia de um arquivo do Servidor para a Estação de Trabalho utilize:CpyF2Web("/images/imagem.png", ... Para cópia de um arquivo da Estação de Trabalho para o Servidor utilize:Para Windows: CpyF2Web("c:/images/imagem.png",... Para Linux/MacOS: CpyF2Web("l:/images/imagem.png",... | X | |
LIsUserDiskDir | lógico | Se LIsUserDiskDir for definido como .T. (Default)O arquivo será copiado para a pasta .../appserver/webapp/user/<ID do usuário>/. Essa pasta é temporária, permitindo o uso do arquivo durante a sessão deste usuário, sendo excluída na sequência. Exemplo de retorno copiando o arquivo para a pasta USER: cf899c9b-7ab5-4d60-a2b6-a35651a9d18f/user/4255d3238e2e4c00921b449a59111f95/file.txt Se LIsUserDiskDir for definido como .F.O arquivo será copiado para a pasta .../appserver/webapp/cache/<environment>/. Essa pasta é excluida caso: Exemplo de retorno copiando o arquivo para a pasta CACHE: cf899c9b-7ab5-4d60-a2b6-a35651a9d18f/cache/sqlite/file.txt | ||
lCompactCopy | lógico | Indica se o arquivo deve ser internamente compactado (.T.) antes de fazer a cópia. Default = .T. (verdadeiro). | ||
lChangeCase | lógico | Se verdadeiro (.T.), nomes de arquivos e pastas serão convertidos para letras minúsculas; Veja maiores informações em Observações. | ||
lUnZipFile | lógico | Se verdadeiro (.T.), o arquivo será descompactado no diretório de destino. Default = .F. (falso). |
Retorno
Nome | Tipo | Descrição |
---|---|---|
cRet | caractere | Retorna o caminho do servidor web onde o arquivo foi salvo com sucesso. Caso ocorra alguma falha na cópia, retorna um valor vazio. |
Observações
- A função CpyF2Web não permite execução via Job, sendo finalizada com a mensagem de erro: "Function CpyF2Web() doesn't available in JOB.".
- É importante evitar o uso do parâmetro <lCompactCopy> caso esteja copiando um arquivo já compactado (ex: ZIP, TAR, etc), evitando um processo desnecessário.
- Para Linux, o parâmetro <lChangeCase> definido como (.T.) tem prioridade em relação às chaves CASESENSITIVE ou SERVERTYPE definidas no appserver.ini.
- Para Windows, o parâmetro <lChangeCase> não influência na utilização, pois este sistema operacional é case insensitive.
- Quando referenciar arquivos na estação de trabalho é importante utilizar uma letra de drive, ex c:\, mesmo em Linux/MacOS, para que haja uma diferenciação da origem do arquivo:
Para Windows:
"c:\diretorio\arquivo"
Para Linux/MacOS:
"l:/diretorio/arquivo" - Quando a origem estiver na estação de trabalho é obrigatório a utilização do WebAgent para a cópia.
Exemplos
#include "TOTVS.CH" User Function drivetoweb() // Copia arquivo do remote local para o servidor Web, sem compactação antes de transmitir Local cRet := CpyF2Web("c:/arquivos/origem.zip", .T., .F., .T., .F.) If (cRet != "") conout(cRet) // f85852b1-ab7d-44df-9c19-f146e476fa16/user/4833a3e64891454fb5549359273c3727/origem.zip Else conout("Falha na copia") EndIf Return User Function servetoweb() // Copia arquivo do servidor para o Servidor Web, compactando antes de transmitir Local cRet := CpyF2Web("/images/imagem.png", .F., .T., .F., .F.) If (cRet != "") conout(cRet) // 4d8a25c6-474e-4f40-bc2d-8c3b76b51e55/cache/environment/imagem.png Else conout("Falha na copia") EndIf Return User Function unixtoweb() // Utilizando Linux como exemplo para copia do arquivo do remote local para o servidor Web Local cRet := CpyF2Web("l:/home/user/teste.png", .T., .T., .T., .T.) If (cRet != "") conout(cRet) Else conout("Falha na copia" + cRet) EndIf Return