Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vaadin Flow下载代码适用于Chrome,但不适用于Firefox-我如何能同时支持这两种版本?_Vaadin_Vaadin Flow_Vaadin10 - Fatal编程技术网

Vaadin Flow下载代码适用于Chrome,但不适用于Firefox-我如何能同时支持这两种版本?

Vaadin Flow下载代码适用于Chrome,但不适用于Firefox-我如何能同时支持这两种版本?,vaadin,vaadin-flow,vaadin10,Vaadin,Vaadin Flow,Vaadin10,我有以下代码从Vaadin Flow(12.0.7)下载一个文件 exportBtn.addClickListener(e->{ toDownload=FileUtil.getLatestExport(); (toDownload!=null){ StreamResource resource=新的StreamResource(toDownload.getName(), ()->FileUtil.getInputStreamForFile(toDownload)); 元素对象=新元素(“对象”)

我有以下代码从Vaadin Flow(12.0.7)下载一个文件

exportBtn.addClickListener(e->{
toDownload=FileUtil.getLatestExport();
(toDownload!=null){
StreamResource resource=新的StreamResource(toDownload.getName(),
()->FileUtil.getInputStreamForFile(toDownload));
元素对象=新元素(“对象”);
setAttribute(“下载”,true);
setAttribute(“数据”,资源);
输入名称=新输入();
UI.getCurrent().getElement().appendChild(名称.getElement(),对象);
}
});
toDownload查找我要下载的文件。如果我从Chrome中单击按钮,浏览器将下载我的文件。如果我从Firefox中单击按钮,则不会发生任何事情。我需要以什么方式调整代码以支持Chrome和Firefox


我将此用作参考。

还有一个解决办法,可以解决由Vaadin Flow中的某些操作触发的下载问题,例如,您有一个按钮,在下载文件之前有条件地显示一个对话框:

 Anchor hiddenDownloadLink = new Anchor(createYourStreamResource(), "Workaround");
 hiddenDownloadLink.setId("DownloadLinkWorkaround_" + System.currentTimeMillis());
 hiddenDownloadLink.getElement().setAttribute("style", "display: none");
 // TODO: add the link somehwere in your view
 UI.getCurrent().getPage().executeJs("document.getElementById('" + hiddenDownloadLink.getId().orElseThrow() + "').click();");

在FF、铬和Edge中测试。该解决方案模拟单击触发下载的锚定。

是否尝试使用锚定元素进行下载,如中所示?@SteffenHarbich正确。应该使用Anchor类来实现这一点:您提供的资源适用于Vaadin 8。我不确定我是否能用它来处理瓦丁流。此外,我认为使用锚元素只对静态内容有效?Vaadin10文档说明了我为动态生成内容提供服务的方式。我会使用anchor.setHref方法在您的案例中提供动态内容吗?请再次阅读链接,这是针对Vaadin Flow的。