Skip to content

EliasSantiago/uploader-s3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API REST para Upload de Arquivos no Amazon S3

Esta é uma API REST simples para facilitar o upload de arquivos no Amazon S3. A API permite que os usuários enviem arquivos para um bucket do Amazon S3 com facilidade, fornecendo um caminho de arquivo personalizado.

Tecnologias Utilizadas

  • Golang: A linguagem de programação Go foi escolhida para desenvolver a API devido à sua eficiência, desempenho e facilidade de uso.
  • Gin: O framework web Gin foi usado para simplificar o roteamento e o tratamento de solicitações HTTP.
  • Amazon S3: O serviço de armazenamento de objetos da Amazon foi usado para armazenar os arquivos enviados pelos usuários.
  • AWS SDK para Go: A biblioteca oficial da Amazon para Go foi usada para interagir com o Amazon S3.
  • Viper: A biblioteca Viper foi utilizada para carregar configurações a partir de um arquivo .env, facilitando a configuração da aplicação.
  • Zap: A biblioteca Zap foi usada para configuração de log robusta e eficiente.

Funcionalidades Principais

  • Upload de arquivos para o Amazon S3.
  • Personalização do caminho do arquivo no bucket S3.
  • Retentativas em caso de falha no upload do arquivo.

Configuração

Certifique-se de configurar corretamente as variáveis de ambiente no arquivo .env no diretório /cmd/uploader. Você pode usar o seguinte formato como exemplo:

  • AWS_REGION=us-east-1
  • AWS_ACCESS_KEY=seu-access-key
  • AWS_SECRET_KEY=seu-secret-key
  • AWS_S3_BUCKET=seu-bucket-s3
  • LOG_OUTPUT=stdout
  • LOG_LEVEL=info
  • GIN_MODE=release

Como Executar

Clone este repositório:

  • Instale as dependências:
go mod tidy
  • No diretório /cmd/uploader execute o seguinte comando para iniciar a aplicação:
go run main.go

A API estará disponível em http://localhost:8080

Uso

Envie uma solicitação POST para http://localhost:8080/api/v1/upload com o arquivo que deseja enviar. Certifique-se de incluir o campo "path" no corpo da solicitação para personalizar o caminho do arquivo no bucket S3.

Exemplo de corpo da solicitação:

var formdata = new FormData();
formdata.append("path", "user/avatar");
formdata.append("files", fileInput.files[0], "download.png");

var requestOptions = {
  method: 'POST',
  body: formdata,
  redirect: 'follow'
};

fetch("http://localhost:8080/api/v1/upload", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Contribuição

Sinta-se à vontade para contribuir com melhorias para este projeto. Se você encontrar problemas ou tiver sugestões, abra uma issue.

Releases

No releases published

Packages

No packages published

Languages