首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用Vaadin 10下载文件?

如何用Vaadin 10下载文件?
EN

Stack Overflow用户
提问于 2018-09-03 12:45:04
回答 1查看 2.1K关注 0票数 1

我想让用户从服务器下载一个文件。我用抬头看作为解决方案,当我试图做一个例子时,最终得到了以下结果:

代码语言:javascript
运行
复制
@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 '/'

如何使下载按钮(或锚)知道文件在磁盘上的位置?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-04 06:12:37

看看文档中的“使用StreamResource”一段。第一个参数只是一个文件名,浏览器将在下载时使用该文件名向用户建议该文件名。这样你就可以像"important-file.log"一样传递它了。下载的内容由InputStream参数提供。例如,您可以从文件中读取,请参阅这里

代码语言:javascript
运行
复制
File initialFile = new File("src/main/resources/sample.txt");
InputStream targetStream = new FileInputStream(initialFile);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52150056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档