Amigos,
Boa noite.
Estou com o mesmo problema e consegui encontrar a causa e reproduzir com exatidão o Bug, já enviei para a equipe do Scriptcase mas fica aqui também registrado para que possam saber e com isso contornar de alguma forma.
Ocorre que ao abrir uma aplicação de GRID ou FORM e clicarmos “rapidamente” (e precisa ser rapidamente) nos campo do tipo “Nome do Arquivo” que já está com um link sendo exibido, dependendo do momento, velocidade, ambiente etc etc, ainda não deu tempo do scriptcase “baixar o arquivo do AWS S3” para as pastas “CACHE e TEMP” , com isso a mensagem de “Arquivo inexistente” é exibida, aguardando alguns segundos os arquivos são carregados em segundo plano e se clicar novamente não dará mais o erro.
Considero um BUG pois o scriptcase só deveria liberar para o click da visualização depois que tivesse certeza que arquivo já foi baixado via a API de armazenamento, lembrando que isso pode depender da velocidade da internet, tipo de armazenamento no AWS S3 e quaisquer outros fatores que interfiram no download.
Vejam a abaixo toda sequência de testes:
E temos um outro problema na API, também já reportado: a opção “Incrementar arquivo” não funciona depois que o arquivo não estiver mais nas pastas “CACHE e TEMP”.
Exemplo: dois usuários distintos sobem em dias diferentes um arquivo chamado “notafiscal.pdf”, quando o usuário 2 subir o arquivo dele que tem um mesmo nome mas conteúdo diferente, vai sobrepor o arquivo do usuário 1, isso não acontece com o armazenamento de arquivos local ou com a opção “Manter arquivo após o upload pela API”, mas é justamente para isso que usamos as APIs de armazenamento, quando temos sistemas com muitos arquivos.
Entendo a dificuldade para corrigir isso, seria necessário por exemplo listar todo o conteúdo da pasta no AWS S3 antes de subir um novo arquivo, isso é inviável e inclusive GERARIA ALTOS CUSTOS por estar lendo várias vezes uma pasta (um dos itens cobrados são justamente as leituras), além da demora é claro.
Uma sugestão para resolver isso seria quando a opção “Incrementar arquivo” estiver ligada criar um outro parâmetro do tipo “Nome da variável ou campo para incremento”, deixando para o desenvolvedor escolher algo que crie um número único para ser incorporado ao nome do arquivo que está subindo.
Espero ter ajudado pessoal, pelo menos até que a Netmake resolva já sabem como reproduzir o erro e tentar contornar de alguma forma. No meu caso, pelo tipo de recurso que preciso fiz o seguinte:
Só uso o campo “Nome do arquivo ou Imagem” para realizar o UPLOAD, depois disso em GRIDs ou FORMs crio um campo do tipo “Imagem HTML” e coloco nesse campo uma tag “href=…” com um link apontando diretamente para o arquivo no AWS S3, assim como faríamos para qualquer arquivo publicado em pastas de site, o usuário então clica no link e baixa ou visualiza o arquivo, mas para isso funcionar é preciso contratar (mais custo) recursos específicos no bucket AWS S3, Google Drive etc.
Espero ter ajudado, vamos em frente !
Abs.