---
# System prepended metadata

title: FileWS SSPGO

---

# 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
```

