java - 下载文件 vaadin

标签 java file web-applications bytearray vaadin

我制作了一个 taable,它的数据源设置为 BeanItemContainer。每个 bean 都有一个名称 (String) 和一个 byte[],它保存一个转换为 byte[] 的文件。我在每一行中添加了一个按钮,假设通过首先将文件转换为 pdf 来下载文件。我在执行下载部分时遇到问题,相关代码如下:

public Object generateCell(Table source, Object itemId,
                Object columnId) {
            // TODO Auto-generated method stub
            final Beans p = (Beans) itemId;

            Button l = new Button("Link to pdf");
            l.addClickListener(new Button.ClickListener() {

                @Override
                public void buttonClick(ClickEvent event) {
                    // TODO Auto-generated method stub

                    try {
                        FileOutputStream out = new FileOutputStream(p.getName() + ".pdf");
                        out.write(p.getFile());
                        out.close();

                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            });
            l.setStyleName(Reindeer.BUTTON_LINK);

            return l;
        }


    });

所以getFile从bean中获取字节数组

最佳答案

如果您使用的是 Vaadin 7,则可以使用 FileDownloader此处描述的扩展名:https://vaadin.com/forum#!/thread/2864064

您需要扩展按钮而不是使用点击监听器:

Button l = new Button("Link to pdf");
StreamResource sr = getPDFStream();
FileDownloader fileDownloader = new FileDownloader(sr);
fileDownloader.extend(l);

获取流资源:

private StreamResource getPDFStream() {
        StreamResource.StreamSource source = new StreamResource.StreamSource() {

            public InputStream getStream() {
                // return your file/bytearray as an InputStream
                  return input;

            }
        };
      StreamResource resource = new StreamResource ( source, getFileName());
        return resource;
}

关于java - 下载文件 vaadin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17413236/

相关文章:

java - LuaJ中lua模块和基于元表的类的组合

Java while循环不循环

android - 在移动设备上请求桌面站点选项

javascript - 如何在基于react js的Web应用程序中获取设备ID?

java - 在java中将一个jpg文件添加到mysql数据库

java - 如何更改Java中选定文本的文本?

java - 如何从 Java 中的 URI 获取正确的文件夹句柄?

java - 在 Java 中如何检查文件中的空行然后忽略它们?

java - 返回字符数而不是单词数中的单词数

php - 阿拉伯语网络字体