java - 使用 FileDownloader 时延迟确定文件名

标签 java download vaadin

在 vaadin 7 中,使用 FileDownloader 时如何延迟确定文件名?

final Button downloadButton = new Button("Download file");
FileDownloader downloader = new FileDownloader(new StreamResource(new StreamSource() {
    @Override
    public InputStream getStream () {
        return new ByteArrayInputStream(expesiveCalculationOfContent());
    }
}, "file.snub"));

downloader.extend(downloadButton);

在此代码示例中,清楚地显示文件名

  1. 垃圾
  2. 必须尽早了解。

如何惰性地确定下载文件的文件名?

最佳答案

我不知道它是否脏,但这可行:在调用其 super 方法之前扩展 FileDownloader.handleConnectorRequest() 来调用 StreamResource.setFilename() 。

    {
        final Button downloadButton = new Button("Download file");
        final StreamResource stream = new StreamResource(
                new StreamSource() {
                    @Override
                    public InputStream getStream() {
                        return new ByteArrayInputStream("Hola".getBytes());
                    }
                }, "badname.txt");
        FileDownloader downloader = new FileDownloader(stream) {
            @Override
            public boolean handleConnectorRequest(VaadinRequest request,
                    VaadinResponse response, String path)
                    throws IOException {
                stream.setFilename("better-name.txt");
                return super
                        .handleConnectorRequest(request, response, path);
            }
        };

        downloader.extend(downloadButton);
        layout.addComponent(downloadButton);
    }

关于java - 使用 FileDownloader 时延迟确定文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15815848/

相关文章:

java - 在启用 Spring Data Mongodb 审核的情况下运行测试

java - 使用IMAPI 2.0监视刻录进度并将更新传递给Java

java - 如何在Java中读取大文件(单个连续字符串)?

Java Raspberry PI Help 是 Vaadin 的最佳方式吗?

vaadin - 当 SelectionMode 为 MULTI 时,隐藏 Flow 组件网格中的 "Select All"复选框 (Vaadin 21)

java - 如何在复制文件时使用 ProgressMonitorInputStream?

android - 如何检查下载图片的过程是否完成?

ios - 从服务器下载文件一直失败,但相同的 obj-c 代码在另一个环境和 IOS 应用程序中工作

C编译器来自哪里?

java - 为 vaadin 基本条形图中的单个条形着色