我正在调整JavaFX中的HTMLEditor,我的目标是在HTMLEditor中插入本地图像。互联网上的图像没有问题,工作正常但是当我尝试插入带有绝对路径的本地图像时,它只显示着名的" X",他没有找到它。
尝试了很多事情,我目前的想法如下所示:
htmleditor.setHtmlText(
"<img src='file://C:/hi.png'/>");
这导致了以下的html代码,我觉得这很好,我想要的结果却不能渲染图像......
<html dir="ltr"><head></head><body contenteditable="true">
<img src="file://C:/test.png"></body></html>
第二个想法)我还生成了一张图片并将其保存在我的硬盘上,称为带有绝对路径的文件,但这导致了与上述相同的问题(这里我希望路径100%正确.. )。
File file = new File(TextArea_imagePath.getText() + ".png");
ImageIO.write(img, "png", file);
htmleditor.setHtmlText("<img src=' " + file.getAbsolutePath() + "'/>");
希望有人能帮助我,猜猜这是一个愚蠢的错误。
P.S: Set a local image in JavaFX HTMLeditor无法帮助我处理没有路径的图像
答案 0 :(得分:1)
您的URI不正确。在hustle-on.wav
部分(方案)之后,您必须具有一个斜杠或三个斜杠。你一定不能有两个斜杠。
以下内容有效:
file:
<img src='file:/C:/hi.png'/>
以下是不有效:
<img src='file:///C:/hi.png'/>
这样做的原因是URI语法对方案后面的两个斜杠赋予特殊含义。来自the URI generic syntax specification:
这个&#34;通用URI&#34;语法由四个主要组件序列组成:
<img src='file://C:/hi.png'/>
所以你可以省略//&lt; authority&gt;完全,或者您可以指定一个空权限,如上面的前两个例子那样。
两个斜杠意味着后面的文本<scheme>://<authority><path>?<query>
是一个权限 - 即具有可选用户,密码和端口号的主机名。显然C:
不是有效的主机名,即使它是,但文件中主机名的确切含义:URI没有很好地定义。
你的第二个想法不会有效。文件名不会自动构成有效的URI。您需要将其转换为URI:
C: