Получите URL с IP-адресом от MvcUriComponentsBuilder.fromMethodName () вместо localhost - PullRequest
0 голосов
/ 26 августа 2018

Я использую MvcUriComponentsBuilder.fromMethodName (), чтобы получить список URL-адресов и вернуть их во внешний интерфейс. Ниже приведен пример вывода, где я получаю домен в виде localhost:

[ http://localhost:8081/files/1800_tiger.jpg/slideshow, http://localhost:8081/files/1800_trees.jpg/slideshow ]

Вместо localhost я хочу, чтобы MvcUriComponentsBuilder возвращал мне IP-адрес моей системы. Ниже приведена моя реализация кода:

     @CrossOrigin
     @RestController
     public class ContentResource {


        @RequestMapping("/getAllFiles")
        public ResponseEntity<List<String>> getAllFiles(@RequestParam String panelName) {
            List<String> fileNamesList = panelFileListMap.get(panelName);
            if (fileNamesList != null) {
                List<String> allFiles = fileNamesList.stream()
                        .map(fileName -> MvcUriComponentsBuilder
                                .fromMethodName(ContentResource.class, "getFile", fileName, panelName).build().toString())
                        .collect(Collectors.toList());
                return ResponseEntity.ok().body(allFiles);
            } else {
                throw new RuntimeException("No images are uploaded in category = " + panelName);
            }
        }


 @GetMapping("/files/{filename:.+}/{panelName}")
    @ResponseBody
    public ResponseEntity<Resource> getFile(@PathVariable("filename") String filename,
            @PathVariable("panelName") String panelname) {

        Resource file = storageService.loadFile(filename, panelname);
        return ResponseEntity.ok()
                .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + file.getFilename() + "\"")
                .body(file);

    }

        }

1 Ответ

0 голосов
/ 26 августа 2018

Сам нашел решение: изменил метод getAllFiles следующим образом:

InetAddress ip = null;
@RequestMapping("/getAllFiles")
    public ResponseEntity<List<String>> getAllFiles(@RequestParam String panelName) {

        try {
            ip = InetAddress.getLocalHost();
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        List<String> fileNamesList = panelFileListMap.get(panelName);
        if (fileNamesList != null) {
            List<String> allFiles = fileNamesList.stream()
                    .map(fileName -> MvcUriComponentsBuilder
                            .fromMethodName(ContentResource.class, "getFile", fileName, panelName)
                            .host(ip.getHostAddress()).build().toString())
                    .collect(Collectors.toList());
            return ResponseEntity.ok().body(allFiles);
        } else {
            throw new RuntimeException("No images are uploaded in category = " + panelName);
        }
    }
...