Как сохранить файл на клиентском ПК вместо серверного ПК при использовании tomcat - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть служба, которая сохраняет xlsx с помощью POI, и когда я сохраняю файл по пути, который он сохраняет на серверном ПК, а не на клиентском ПК.

Частичный код из моей программы:

public static final String EXCELPATH = "C:\\SAMPLE\\REPORTS\\";

Workbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet("Sheet 1");

filepath = EXCELPATH + "TCRKBOS_050020_" + mTodayDate;
FileOutputStream fileOut = new FileOutputStream(filepath + ".csv");
Row row;
Cell cell;

// ********* SAMPLE CELL **************** //
row = sheet.createRow(0);
cell = row.createCell(0);
cell.setCellValue("REPDTE");
cell.setCellStyle(centerHeader1);

cell = row.createCell(1);
cell.setCellValue("BNKCDE");
cell.setCellStyle(centerHeader1);

conn.close();
wb.write(fileOut);
fileOut.flush();
fileOut.close();

1 Ответ

0 голосов
/ 27 февраля 2019

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

Что вы можете сделать, это отправить файл по HTTP в качестве ответа.Я предполагаю, что вы используете сервлет здесь.Внутри вашего сервлета, если вы хотите, чтобы загрузка вашего файла происходила в ответ на запрос GET, вы можете сделать что-то вроде этого:

  protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException {

        resp.setContentType("text/csv");
        resp.setHeader("Content-disposition", "attachment; filename=TCRKBOS_050020_" + mTodayDate + ".csv");

        try (OutputStream out = resp.getOutputStream()) {
            //todo: write the CSV data to the output stream
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...