Coder Social home page Coder Social logo

evless / seferstorage Goto Github PK

View Code? Open in Web Editor NEW

This project forked from taksebe-official/seferstorage

0.0 0.0 0.0 75 KB

Простое файловое хранилище с архивацией файлов (.zip) заданных форматов + Swagger

License: Apache License 2.0

Java 100.00%

seferstorage's Introduction

Sefer

Простой модуль, используемый через API внешними приложениями для централизованного хранения файлов в заданной директории

Sefer - "книга" на древнееврейском

Особенности:

  • файлы некоторых форматов, указанных в настройках, архивируются (.zip), остальных форматов - нет
  • файлы хранятся без расширения и оригинального имени. Эти параметры хранит внешнее приложение
  • при сохранении файлу в качестве имени присваивается UUID, служащий идентификатором файла для внешних приложений

API

Загрузить файл:

HTTP Method: POST

URL: .../sefer/api/files/upload

Request: MultipartFile, не забывая записать в поле name объекта MultipartFile полное название файла, включающее его расширение (например, "Резюме Торвальдс.pdf")

Response:

{
"response": {
    "FileInfoDto": {
        fileName: <UUID>
        }
     }
}

Получить файл:

HTTP Method: GET

URL: /api/files/download/{uuid}

Request: UUID

Response: application/octet-stream

Удалить файл:

HTTP Method: DELETE

URL: /api/files/{uuid}

Request: UUID

Response: void

Пример использования

    public UUID upload(MultipartFile file) {
        String serverUrl = URL + "/upload";

        HttpHeaders requestHeaders = new HttpHeaders();
        requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);

        MultiValueMap<String, Object> parameters = new LinkedMultiValueMap<String, Object>();
        parameters.set("Content-Type","multipart/form-data");
        parameters.add("file", file.getResource());

        final HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<MultiValueMap<String, Object>>(
                parameters, requestHeaders);

        ResponseEntity<FileInfoDto> response = restTemplate.exchange(serverUrl, HttpMethod.POST, httpEntity, FileInfoDto.class);

        if (response.getBody() == null) {
            return null;
        }
        return response.getBody().getFileName();
    }

    public void download(UUID seferFileName, OutputStream stream) {
        String serverUrl = URL + "/download/" + seferFileName;

        restTemplate.execute(serverUrl, HttpMethod.GET, null, clientHttpResponse -> {
            StreamUtils.copy(clientHttpResponse.getBody(), stream);
            return stream;
        });
    }

    public void delete(UUID seferFileName) {
        String serverUrl = URL + "/" + seferFileName;
        restTemplate.delete(serverUrl);
    }

Лицензия

Этот проект лицензируется в соответствии с лицензией Apache 2.0

Подробности в файле LICENSE

Автор

Сергей Козырев

Контакты для связи

Telegram @taksebe

Создано с помощью

Java™ SE Development Kit 11.0.5

Git - управление версиями

GitHub - репозиторий

Apache Maven - сборка, управление зависимостями

JUnit 5 - тестирование

Полный список зависимостей и используемые версии компонентов можно найти в pom.xml

Сборка и запуск

git clone https://github.com/taksebe-official/seferStorage
mvn clean install
java -jar target/sefer.jar

Отдельное спасибо

Владу, который продолжает возиться со мной, неразумным

seferstorage's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.