Spring boot addResourceHandler не работает с использованием сервиса - PullRequest
0 голосов
/ 03 января 2019

Я хотел загрузить динамические изображения и обработать их с помощью тега <img>, поэтому я следовал этому решению: Загрузка и загрузка изображений Spring Boot

Абсолютный путь проекта : /home/vkumar/apps/contest

Абсолютный путь Загрузить каталог : /home/vkumar/apps/contest/uploads

ResourceConfig.java

public class ResourceConfig implements WebMvcConfigurer {

@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/uploads/**").addResourceLocations("file:uploads/");
  }
}

Затем я загрузил файл в uploads dir test.jpg

Теперь, если я иду на сервер и запускаю приложение с помощью команды

Mvn Spring-Boot: запустить

и открыть изображение http://example.com:8080/uploads/test.jpg

все работает нормально, я вижу изображение, которое было загружено, однако, если я создаю jar с помощью команды

чистая упаковка mvn

Я вижу ошибку "Это приложение не имеет явного сопоставления для / error, поэтому вы видите это как запасной вариант."

1 Ответ

0 голосов
/ 04 января 2019

Вы можете создать метод контроллера для загрузки загруженных файлов.

Вы можете следовать этому руководству: https://spring.io/guides/gs/uploading-files/

или этому краткому примеру на pastebin.https://pastebin.com/yDr61Emm

Пример кода ниже:

@GetMapping("/pictures/{filename:.+}")
    @ResponseBody
    public ResponseEntity<Resource> serveFile(@PathVariable String filename) {

        Path path = rootLocation.resolve(filename);
        Resource file = null;
        try {
            file = new UrlResource(path.toUri());
        } catch (MalformedURLException ex) {
            Logger.getLogger(UploadController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION,
                "attachment; filename=\"" + file.getFilename() + "\"").body(file);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...