django-autocompelete-light в материализации модели select2 поисковый ввод не работает

Если вы:

  • Не хотите загружать весь файл в byte[] перед отправкой в ​​ответ;
  • Хотите / нужно отправить / скачать через InputStream;
  • Хотите иметь полный контроль над типом Mime и именем файла, отправленным
  • У вас есть другие @ControllerAdvice для исключения.

Ниже приведен код, который вам нужен:

@RequestMapping(value = "/stuff/{stuffId}", method = RequestMethod.GET)
public ResponseEntity downloadStuff(@PathVariable int stuffId)
                                                                  throws IOException {
    String fullPath = stuffService.figureOutFileNameFor(stuffId);
    File file = new File(fullPath);

    HttpHeaders respHeaders = new HttpHeaders();
    respHeaders.setContentType("application/pdf");
    respHeaders.setContentLength(12345678);
    respHeaders.setContentDispositionFormData("attachment", "fileNameIwant.pdf");

    InputStreamResource isr = new InputStreamResource(new FileInputStream(file));
    return new ResponseEntity(isr, respHeaders, HttpStatus.OK);
}

Также обратите внимание, что, чтобы избежать прочтения всего файла только для вычисления его длины, лучше сохранить его ранее. Убедитесь, что вы проверяете документы для InputStreamResource .

0
задан vincent_pun 16 January 2019 в 06:40
поделиться