Как создать текстовый файл с содержимым String и загрузить этот текстовый файл - PullRequest
0 голосов
/ 29 мая 2019

Я использую Java и распорки.У меня есть сценарий, где на странице есть ссылка 'Download' .После нажатия на эту ссылку элемент управления переходит к классу Action , где у меня есть содержимое String, которое мне нужно записать в файл .txt , а затем загрузить этот текстовый файл.

В конечном итоге всякий раз, когда мы нажимаем на ссылку для скачивания, мы можем загружать текстовый файл, содержащий определенную строку.

Я использовал приведенный ниже фрагмент кода,

FileOutputStream outputStream = new FileOutputStream(fileNameWithDirectory);
outputStream.write(fileContentString.getBytes());
outputStream.close();
ActionForward forward = new ActionForward("doc/" + filename);
forward.setName(filename);
forward.setRedirect(true);
return forward;

ТакжеЯ пытался использовать FileWriter вместо FileOutputStream, например,

FileWriter fileWriter = new FileWriter(fileNameWithDirectory);
fileWriter.write(fileContentString);
fileWriter.flush();
fileWriter.close();

Но всегда вместо загрузки txt-файла элемент управления открывает новое окно, в которое записывается содержимое String.Пожалуйста, предложите мне, как я могу скачать этот файл .txt .

Ответы [ 3 ]

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

Вам не нужно записывать файл и затем перенаправлять на него.Вы можете установить заголовок ответа http с именем Content-Disposition и затем распечатать свои данные в теле ответа http.

использовать его следующим образом

response.addHeader("Content-Disposition", "Content-Disposition: attachment; filename=\""+filename+"\"");

, конечно, этозависит от того, какой технологический стек вы используете.

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

Конвертируйте ваш текстовый файл в поток.и установите тип контента, который вы хотите загрузить. response.setContentType ("application / pdf");

try {
      // get your file as InputStream
      InputStream is = ...;

      // copy it to response's OutputStream
      org.apache.commons.io.IOUtils.copy(is, convertedTextFiletoStream);

    } catch (IOException ex) {
      log.info("Error writing file to output stream. Filename was '{}'", fileName, ex);
      throw new RuntimeException("IOError writing file to output stream");
    }
0 голосов
/ 29 мая 2019

Вы должны добавить Content-Disposition: attachment, чтобы сказать браузеру, что он должен загружать файл, а не открывать его.

Подробнее здесь

Также Struts имеет DownloadAction , вы также можете использовать его.

...