Tempo aproximado para leitura: 00:03:00 min
Dúvida
Após atualização do WebApp para a versão 10.1.3 ou superior, o path retornado pela função tFileDialog está diferente. Como ajustar?
Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) - ADVPL - À partir da versão 12.1.2410
Solução
Caminho da função tFileDialog alterado após atualização do WebApp para 10.1.3 ou superior
Se você atualizou seu WebApp para a versão 10.1.3 ou superior e notou que o caminho retornado pela função tFileDialog está diferente, saiba que essa mudança é intencional e faz parte do novo comportamento da aplicação.
O que mudou?
A partir da versão 10.1.3, quando o parâmetro lSalvar é definido como .F. (falso), o WebApp não retorna mais o caminho local do arquivo no computador do usuário. Em vez disso, ele realiza um upload do arquivo para uma pasta temporária no servidor de aplicação (o AppServer).
O caminho retornado por tFileDialog é agora o caminho completo para essa pasta temporária no servidor, e é exatamente esse caminho que deve ser usado para acessar o arquivo.
Como ajustar?
Não é necessário fazer ajustes no seu código. As funções de acesso a arquivos, como fOpen, fRead e outras, já foram preparadas para lidar com esse novo caminho. Basta passar o caminho completo (o cRet da função tFileDialog) diretamente para essas funções.
Exemplo:
User Function FLDGTST()
local targetDir := ""
Local nHandle
Local cString := ""
DEFINE DIALOG oDlg TITLE "Exemplo TFileDialog" FROM 0,0 TO 100,200 PIXEL
oBtnFIle := TButton():New( 002, 002, "Abre TFileDialog",oDlg,;
{||;
targetDir := tFileDialog( "", 'Selecao de Arquivos',, tmp, .F., ), ;
msgAlert(targetDir);
}, 50,10,,,.F.,.T.,.F.,,.F.,,,.F. )
ACTIVATE DIALOG oDlg CENTERED
nHandle := fopen(targetDir , FO_READWRITE + FO_SHARED )
cTeste := fRead(nHandle, cString, 100)
return
Essa mudança garante que a manipulação do arquivo ocorra de forma segura e eficiente no ambiente do servidor, sem depender do acesso direto ao disco do cliente.
Importante:
Chamada da função tFileDialog em ambiente web.
Por questões de segurança, os navegadores não permitem que uma janela de seleção de arquivos seja aberta sem a interação direta do usuário, como o clique em um botão. Por esse motivo, não é possível chamar a função tFileDialog diretamente a partir de uma tela de parâmetros do WebApp.
Para que a função funcione corretamente, ela deve ser chamada a partir de uma ação do usuário, como o clique em um botão na sua rotina.
Saiba mais:
tFileDialog
0 Comentários