Informações importantes
🚨 Função disponível somente para o WebApp, a partir da versão 9.1.x.
A função copia um arquivo entre o Servidor e a Estação de Trabalho e vice-versa.
Se o arquivo for copiado para a pasta temporária (User) no Servidor, esta pasta é deletada automaticamente quando a sessão é finalizada.
Se o arquivo for copiado para a pasta persistente (Cache) no Servidor, a pasta será mantida até que seja excluída manualmente pelo administrador do ambiente.
Sintaxe
CpyF2Web( < cOrigem >, [ lIsUserDiskDir ], [ lCompactCopy ], [ lChangeCase ], [ lUnZipFile ] )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cOrigem | caractere | Indica o arquivo a ser usado como origem da cópia: 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 | Indica se o arquivo vai ser salvo na pasta temporária (.T.) ou na pasta do Environment (.F.) onde está o Servidor. Default = .T. (verdadeiro). | ||
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 um letra de drive, mesmo em Linux/MacOS, para que haja uma diferenciação da origem do arquivo, utilze:
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