[PROTHEUS] - cGetFile - SmartClietHTML x SmartClient.exe

Bom dia galera!

Implementei a função cGetFile, e ao usar no SmartClientHTML (com WEBAPP.DLL), não apresenta as unidades C:/ e D:/ (no meu caso), somente o RootPah.

Já no SmartClient.exe é apresentado.

No TDN pelo link [http://tdn.totvs.com/pages/viewpage.action?pageId=118885352#SmartClientHTML-Diferen%C3%A7asentreasvers%C3%B5esHTMLeDesktop-CGetFile], onde se descreve sobre a função cGetFile, não está claro o porque (pelo menos pra mim), de não apresentar as unidades locais da maquina.

Poderiam me explicar o motivo para poder explicar ao cliente ?

Agradecido tchê.

:warning: Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.

Olá, quando o comando é enviado para o server via smartclient ele sabe onde é a instalação do exe, pois ele é um arquivo físico. Com o web isto não é possível pois a mensagem do navegador pode estar vindo de qualquer lugar. Não há garantia de onde o navegador está sendo chamado. O mais correto é realizar no seu fonte um tratamento verificando se é web ou não. Caso seja smartclient você chama a função. Caso seja web você pode chamar a CpyS2TW (http://tdn.totvs.com/display/tec/CpyS2TW) que ela vai carregar o arquivo para ser baixado no navegador e a regra fica correta.

Boa tarde Jandir!

Não entendi muito, desculpa.
:frowning:

Pra ser bem " dâmis ".
Se usar a função CpyS2TW, vai aparecer as unidades locais na janela do cGetFile ?

Porque se estou entendendo a funcionalidade do cGetfile, com base nos parâmetros da função vai mostrar arquivos para serem selecionados.
Como ao apresentar a janela, já não aparece as unidades locais, como poderei escolher e consequentemente copiar o arquivo que está em uma unidade (pasta) local ?

Abraço!

Pra esclarecer: o usuário vai escolher um arquivo pra importar para a base de dados.

Luciano, não. Você vai criar o arquivo no server para o usuário e chamar esta função. Dependendo da configuração de navegadores dele o arquivo será enviado diretamente para a pasta de downloads ou o próprio navegador vai abrir a tela de seleção de drivers para que ele escolha o local para salvar o arquivo. Abs!

Luciano, pelo que já vi não tem como o usuário estar no Navegador e abrir uma tela para que o usuário informe um arquivo para ser importado. Sugiro que se o usuário estiver usando o navegador tu mostre uma tela diferente, mostrando uma campo onde ele informe o diretório e o nome do arquivo para que seja utilizada a função CpyT2S() conforme a documentação.
http://tdn.totvs.com/display/tec/CpyT2S

Jorge, não é possível utilizar esta função pois não existe SmartClient. A única solução é utilizar a CpyS2Tw. Imagina que o server não tem acesso a maquina onde o navegador está sendo acessado, e a informação dos diretórios também não é informada por ele (pois isto é uma falha de segurança).