Download de Documentos Amazon S3

Estou tentando utilizar o upload/download de documentos para o Amazon S3 e estou enfrentando problemas no download…
A parte de upload ocorre certinho: os arquivos vão para o S3, na pasta que especifiquei, e a exclusão também está de acordo.

Já quando faço download, fica me acusando que o arquivo não foi encontrado. Reparei que, se eu habilitar a opção “Manter arquivo após o upload pela API” do campo, ele funciona o download. Porém, está fazendo o download através do arquivo que se encontra na pasta da aplicação, e não no arquivo que existe no S3. Se deixar dessa forma e eu atualizar o arquivo diretamente no S3 e consultar via Script Case, ele não atualiza, então preciso que seja feito via S3.

Vi que há alguns tópicos aqui relatando o mesmo problema há anos atrás, e nenhuma devolutiva, como esse por exemplo:
Api do aws nao faz download de arquivos - Bugs - Scriptcase

Assim como vi também que na release da v9.8.008 ( ScriptCase v9.8.008 (20/09/2022 15:03) - Changelog - Scriptcase) supostamente havia um bug nesse download e que fora corrigido, mas continua com problema para mim (estou com a versão 9.10.023).

Olá Richard e colegas.

Estou enfrentando a mesma dificuldade e estou também na versãp 9.10.023 ( validando a versão ainda nos meus projetos ).

No php 7. nas versões anteriores aparecia um erro de MKDIR. Na 9.10.023 não aparece erro nenhum mas também não baixa.

Se alguém passou por isso nos avise.

Jairo

Olá, @jrjairo.
Ontem estive em contato com o suporte do ScriptCase, pois abri um formulário relatando o problema.
Não foram muito abrangentes, e apenas assistiram minha tela e eu expliquei o problema. O retorno que me deram é que irão precisar validar se isso é algo do meu ambiente, ou se é mesmo um comportamento irregular da ferramenta, mas ao que vejo, parece ser algo com a própria ferramenta.

Como eu comentei no tópico, para download funciona sim, desde que seja download a partir de arquivos locais, fazendo com que exista o arquivo na pasta /scriptcase/tmp

Estou aguardando o retorno do time de bugs da SC por enquanto.

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.