Vaadin14 访问Vaadin 14/RapidclipseX IMG组件中的本地资源(本地目录-项目外部)

Vaadin14 访问Vaadin 14/RapidclipseX IMG组件中的本地资源(本地目录-项目外部),vaadin14,rapidclipse,Vaadin14,Rapidclipse,如何从映像组件中的“我的硬盘驱动器外部项目文件夹”访问本地映像文件以创建映像库?如何写入文件的路径?在瓦丁14/RapidclipseX 它只从项目或URL获取路径。在我的项目中,用户必须上传图片,我想制作一个展示图片的图库 我尝试了以下所有方法,但没有成功: D:\\Canavans\\Reports\\256456\\424599_320943657950832_475095338_n.jpg D:\Canavans\Reports\256456\424599_320943657950832

如何从映像组件中的“我的硬盘驱动器外部项目文件夹”访问本地映像文件以创建映像库?如何写入文件的路径?在瓦丁14/RapidclipseX

它只从项目或URL获取路径。在我的项目中,用户必须上传图片,我想制作一个展示图片的图库

我尝试了以下所有方法,但没有成功:

D:\\Canavans\\Reports\\256456\\424599_320943657950832_475095338_n.jpg
D:\Canavans\Reports\256456\424599_320943657950832_475095338_n.jpg
代码也尝试了这种方式:

for(final File file: files)
    {
        System.out.println(file.getName());
        this.log.info(file.getName());
        this.log.info(file.getAbsolutePath());
        final String path = "file:\\\\" + file.getAbsolutePath().replace("\\", "\\\\");
        this.log.info(path);
        final Image img = new Image();
        img.setWidth("300px");
        img.setHeight("300px");
        img.setSrc("file:\\\\D:\\\\Canavans\\\\Reports\\\\256456\\\\IMG20171002142508.jpg");
        this.flexLayout.add(img);
    }

请帮忙!提前谢谢。或者有没有其他方法来创建图像库?

Hmm据我所知,如果您想访问资源文件夹之外的资源,您可以创建一个StreamResource并用它初始化图像。如果要使用images src属性,则文件必须位于Vaadin的一个资源文件夹内,例如“webapp”文件夹

下面是一个关于如何使用StreamResource创建图像的简单示例:

final StreamResource imageResource = new StreamResource("MyResourceName", () -> {
    try
    {
        return new FileInputStream(new File("C:\\Users\\Test\\Desktop\\test.png"));
    }
    catch(final FileNotFoundException e)
    {
        e.printStackTrace();
        return null;
    }
});

this.add(new Image(imageResource, "Couldn't load image :("));
希望这有助于: