Как разработать конечную точку get с пружинной загрузкой, поддерживающей прерывание (пауза, потеря соединения,…)? - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь разработать конечную точку, которая загружает файлы с сервера. Моя конечная точка должна поддерживать прерывание (пауза, потеря соединения,…).

На данный момент я понятия не имею, как это сделать. Я просто создаю простую конечную точку get.

  @GetMapping("/self/{fileName}")
   public ResponseEntity<Resource> getFile(@PathVariable("fileName") String fileName,
                                           @RequestParam(value ="checksum", required = false) String checksumParam,
                                           @RequestHeader HttpHeaders headers,
                                           HttpServletRequest request) throws Exception {

           Resource resource;
           String contentType = null;
           String country = headers
            .getFirst(fileStorageProperties.getHeaderCountryField())
            .toLowerCase();

           try {

               contentType = request
                 .getServletContext()
                 .getMimeType(resource.getFile().getAbsolutePath());

           } catch ( IOException ex) {
               this.log.error(ex.getMessage());
           }

           if(contentType == null) {
               contentType = "application/octet-stream";
           }

           HttpHeaders responseHeaders = new HttpHeaders();
                responseHeaders
.set(HttpHeaders.CONTENT_DISPOSITION,"attachment; filename=\"" + resource.getFilename() + "\"");


               return ResponseEntity.ok()
                       .contentType(MediaType.parseMediaType(contentType))
                       .headers(responseHeaders)
                       .body(resource);


   }

Я хотел бы возобновить загрузку с того места, где она была остановлена, если загрузка была остановлена ​​из-за разрыва соединения или если пользователь решил остановить его.

1 Ответ

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

А как насчет использования Http header Range? Реализуйте свой метод get для проверки этого заголовка, и если он существует, просто вырежьте это количество байтов из вашего файла.

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