как скачать файл который загружает - PullRequest
0 голосов
/ 07 октября 2019

Я разрабатываю функцию загрузки из файлов Excel, после того как я проанализировал загружаемый файл Excel и изменил некоторые значения в Рабочей книге, как загрузить Рабочую книгу? ниже, как мой интерфейс загрузки:

public void batchImport(HttpServletResponse response, MultipartFile file) {
    String fileName = file.getOriginalFilename();
    boolean isExcel2003 = true;
    if (fileName.matches("^.+\\.(?i)(xlsx)$")) {
      isExcel2003 = false;
    }
    InputStream is = file.getInputStream();
    if (isExcel2003) {
      Workbook wb = new HSSFWorkbook(is);
    } else {
      Workbook wb = new XSSFWorkbook(is);
    }
    // some logic to handle wb

    // download an excel by the Workbook
    response.setHeader("content-Type", "application/vnd.ms-excel");
    response.setHeader(
        "Content-Disposition",
        "attachment;filename="
            + URLEncoder.encode(fileName, "utf-8").replaceAll("\\+", "%20").replaceAll("_", "\\/"));
    wb.write(response.getOutputStream()); 
}

Я отлаживаю его в строке загрузки, значение wb верно, ошибок нет, но ничего не загружается. как я мог изменить это?

1 Ответ

1 голос
/ 07 октября 2019
@PostMapping(value = Mappings.UPLOAD)
@ResponseBody
public void upload( MultipartFile file, HttpServletResponse response)

Метод void не имеет типа возврата, поэтому нет тела ответа. Вам необходимо указать тип возвращаемого значения, например ResponseEntity, и вернуть значение.

Или удалить аннотацию ResponseBody.

Посмотрите здесь образцы: https://www.baeldung.com/spring-mvc-image-media-data

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