2016-02-19 4 views
0

Я делаю файл Excel с POI Apache, и я сохраняю его в FileOutputStream.FileOutputStream to StreamedContent

В XHTML, я хочу загрузить этот файл с <p:fileDownload>, но для работы ему нужен StreamedContent.

Я хочу знать, как разобрать или отличить мой FileOutputStream в StreamedContent, чтобы загрузить его с помощью PrimeFaces.

+0

Смотреть Http: // StackOverflow. com/a/15970438/3365426 –

+0

DefaultStreamedContent требует FileInputStream, но у меня уже есть FileOutputStream – Oscarmageddon

+0

Затем найдите способы преобразования выходного потока во входной поток – Kukeltje

ответ

-2

Мне пришлось сохранить файл на диск и прочитать его позже с типом файла, чтобы сохранить его в StreamedContent.

Код:

HSSFWorkbook libro = new HSSFWorkbook(); 
FileOutputStream elFichero = new FileOutputStream("c:/Temp/MyExcel.xls"); 
     libro.write(elFichero); 
     elFichero.close(); 
     libro.close(); 
     File fil = new File("c:/Temp/MyExcel.xls"); 
     StreamedContent excel = new DefaultStreamedContent(new FileInputStream(fil), new MimetypesFileTypeMap().getContentType(fil), "MyExcel.xls")); 

позже я мог бы получить мой файл первенствовать в <p:commandButton>.

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

1

Вот решение без сохранения файла на диск:

HSSFWorkbook workbook = new HSSFWorkbook(); 

    ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
    workbook.write(outputStream); 

    InputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); 
    StreamedContent streamedContent = new DefaultStreamedContent(inputStream, "application/xls", "output.xls"); 

 Смежные вопросы

  • Нет связанных вопросов^_^