1

我想让用户从服务器下载文件。我查找了解决方案,并在尝试制作示例时 - 最终得到了这个:

@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 '/'当我转到浏览器中的页面时,这是给的。
如何在知道磁盘上的文件位置的情况下制作下载按钮(或锚点)?

4

1 回答 1

1

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

File initialFile = new File("src/main/resources/sample.txt");
InputStream targetStream = new FileInputStream(initialFile);
于 2018-09-04T06:12:37.900 回答