Как сохранить файлы, загруженные с клиентского компьютера, в автономный каталог jboss? - PullRequest
0 голосов
/ 20 мая 2019

У меня есть требование для хранения файлов, загруженных (используя spring mvc) с клиентского компьютера в автономный каталог jboss. Дайте пошаговое решение

1 Ответ

0 голосов
/ 22 мая 2019

Я бы попробовал проект сообщества под названием Spring Content .Этот проект позволяет очень легко обрабатывать файлы, внедряя реализации службы и контроллера для вас (так что вам не нужно писать их самостоятельно).

Добавление этого будет выглядеть примерно так:

pom.xml (при условии, что Maven. Также доступны стартеры с пружинной загрузкой)

    <!-- Java API -->
    <!-- just change this depdendency if you want to store somewhere else -->
    <dependency>
        <groupId>com.github.paulcwarren</groupId>
        <artifactId>spring-content-fs</artifactId>
        <version>0.8.0</version>
    </dependency>
    <!-- REST API -->
    <dependency>
        <groupId>com.github.paulcwarren</groupId>
        <artifactId>spring-content-rest</artifactId>
        <version>0.8.0</version>
    </dependency>

StoreConfig.java

@Configuration
@EnableFilesystemStores
@Import(RestConfiguration.class)
public class StoreConfig {

    @Bean
    FileSystemResourceLoader fileSystemResourceLoader() throws IOException {
        return new FileSystemResourceLoader(new File("/path/to/uploaded/files").getAbsolutePath());
    }

}

FileStore.java

  @StoreRestResource(path="files")
  public interface FileStore extends Store<String> {
  }

И все.FileStore - это по сути универсальный Spring ResourceLoader.Зависимость spring-content-fs заставит Spring Content внедрить реализацию на основе файловой системы.Зависимость spring-content-rest заставит Spring Content также внедрить реализацию, если @Controller перенаправляет HTTP-запросы в методы службы FileStore.

Таким образом, теперь у вас будет полностью функциональная (POST, PUT, GET, DELETE) файловая служба на основе REST в /files, которая будет использовать ваш FileStore для извлечения (и сохранения) файлов в /path/to/uploaded/filesна вашем сервере jboss.

Итак:

curl --upload-file some-image.jpg /files/some-image.jpg

загрузит some-image.jpg и сохранит его в /path/to/uploaded/files на вашем сервере.

И:

curl /files/some-image.jpg

получит его снова.

HTH

Внедренный контроллер также поддерживает потоковую передачу видео, в случае, если это полезно.

При этом вы также можете удалить весь свой контроллер и служебный код, как он естьбольше не требуется.Кроме того, поскольку Spring Content является абстракцией хранилища, в будущем вы также можете перейти на любой другой носитель информации, поддерживаемый Spring Content;S3 например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...