【问题标题】:How to download a file with Vaadin 10?如何使用 Vaadin 10 下载文件?
【发布时间】:2018-09-03 12:45:04
【问题描述】:

我想让用户从服务器下载文件。 我looked up 寻求解决方案,并在尝试举例时 - 最终得到了这个:

@Route("test-download")
public class Download extends VerticalLayout {

    public Download() {
        Anchor downloadLink = new Anchor(createResource(), "Download");
        downloadLink.getElement().setAttribute("download", true);
        add(downloadLink);
    }

    private AbstractStreamResource createResource() {
        return new StreamResource("/home/johny/my/important-file.log", this::createExportr);
    }

    private InputStream createExportr(){
        return null;
    }
}

当我在浏览器中访问页面时,它会给出java.lang.IllegalArgumentException: Resource file name parameter contains '/'
如何在知道磁盘上的文件位置的情况下制作下载按钮(或锚点)?

【问题讨论】:

    标签: vaadin vaadin10 vaadin-flow


    【解决方案1】:

    查看documentation,段落“使用 StreamResource”。第一个参数只是一个文件名,浏览器将使用该文件名在下载时向用户建议该文件名。所以你可以像"important-file.log" 一样传递它。下载内容由InputStream 参数提供。例如,你可以从你的文件中读取,见here:

    File initialFile = new File("src/main/resources/sample.txt");
    InputStream targetStream = new FileInputStream(initialFile);
    

    【讨论】:

      猜你喜欢
      • 2016-11-27
      • 2013-06-29
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 2022-01-01
      • 2023-01-04
      • 2013-05-15
      • 1970-01-01
      相关资源
      最近更新 更多