Árvore de páginas


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.

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:
-O Servidor de Aplicação (AppServer) seja reiniciado;
-O Administrador do ERP a exclua manualmente.

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;
caso contrário, falso (.F.), não será feito nenhum ajuste no nome do arquivo informado. Default = .T. (verdadeiro).

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

Veja também

  • Sem rótulos