# FileWS SSPGO ## Antes de usar o filews saiba que 1. Você deve solicitar ao TI da SSP criação de um namespace para seu projeto ou corporação. 2. O filews sanitiza os arquivos de imagem. Ele refaz todas as imagens para tirar headers maliciosos, logo o md5 da imagem vai mudar após o upload. 3. O filews faz resize de imagens maiores que 1000px de altura ou largura. Ele garante que a maior dimensão tenha no máximo 1000px. 4. O filews não deixa entrar arquivos office ou pdf com senha, macro, scripts, anexos, OLE objects, etc 5. O filews tem o limite dew 15MB por arquivo ## Tipos de arquivos suportados * texto (txt, rtf, variações do ms word e open office) * planilha (variações do ms excel e open office) * application/pdf * application/pkcs7-signature * application/zip * application/x-rar-compressed * model/vnd.dwf * audio/* * video/* * image/* ## Enviando um arquivo É um multipart/form-data upload com 3 parametros: **arquivo**, **tipoPermissao** (PUBLICO ou TOKEN) e **namespace** (ssp, bm, pm, pc ou ptc) ```bash curl -X POST \ https://filews.ssp.go.gov.br/uploadArquivo \ -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \ -H 'token: b61bb3e5b50da29ec74a15a51fa30829' \ -F 'arquivo=@teste.png' \ -F tipoPermissao=TOKEN \ -F namespace=ssp ``` RESPONSE: ```json { "id": "2iAp8rxRbhS05Uq0eTROYSfvgxTjRtRc", <---- Id permanente. "dataUpload": 1540467520154, "nomeOriginal": "teste.png", "tipoPermissao": "TOKEN", "mimeType": "image/png" } ``` ## Evitando que o id permanente do arquivo seja usado no frontend Para um camada extra de segurança, é melhor gerar um id temporário para um arquivo privado. No seu backend, ao invés de devolver o id permanente para view, troque-o por um identificador temporário. Veja abaixo como: **id** É o identificado permanete do arquivo **maxHits** é o número de downloads que esse id temporário vai permitir. **expiracaoEmMinutos** pode-se controlar a expiração passando o tempo de expiração **dataExpiracao** pode-se controlar a expiração passando a data de expiração (timestamp) ```bash curl -X POST \ http://localhost:8091/idTemporario \ -H 'Content-Type: application/json' \ -H 'token: 821abf59b17b2f51a723af42b59a456c' \ -d '{ "id" : "GhGwdZb7V4CJP9KirA0s0YJZr0MCx3uT", <---- Id permanente. "maxHits": 3, "expiracaoEmMinutos": 3 //ou dataExpiracao: 1573481487747 }' ``` RESPONSE: ```json { "id": "rmliz834XOBjuLGcGjdntgbbpTVsO0JehUU6eslNidLKVLtS1ye7Iin0xP7wfsjy", <---- Id temporário. "dataExpiracao": 1569854394198, "maxHits": 3 } ``` Com o **id temporário** em mãos, basta chamar o /loadArquivo (ainda é necessário informar o token) ``` https://filews.ssp.go.gov.br/loadArquivo?id=rmliz834XOBjuLGcGjdntgbbpTVsO0JehUU6eslNidLKVLtS1ye7Iin0xP7wfsjy&token=821abf59b17b2f51a723af42b59a456c ``` ## Carregando um arquivo PUBLICO (ou seja, com tipoPermissao == PUBLICO) Com o **id permanente** em mãos, basta chamar o /loadArquivo (não há necessidade de gerar id temporário) ``` https://filews.ssp.go.gov.br/loadArquivo?id=GhGwdZb7V4CJP9KirA0s0YJZr0MCx3uT ```