Jsf 上载的图像仅在刷新页面后可用
上传图片时,文件成功保存,路径设置成功。但表单提交后,上传的图像不会立即显示。只有在重新加载页面时,才会显示上载的图像 我正在保存上传的文件,如下所示:Jsf 上载的图像仅在刷新页面后可用,jsf,jakarta-ee,servlets,file-upload,refresh,Jsf,Jakarta Ee,Servlets,File Upload,Refresh,上传图片时,文件成功保存,路径设置成功。但表单提交后,上传的图像不会立即显示。只有在重新加载页面时,才会显示上载的图像 我正在保存上传的文件,如下所示: InputStream is; try { File file = new File("C:\\****\\*****\\Documents\\NetBeansProjects\\EventsCalendary\\web\\resources\\images\\uploadPhoto.png"); is = event.getF
InputStream is;
try {
File file = new File("C:\\****\\*****\\Documents\\NetBeansProjects\\EventsCalendary\\web\\resources\\images\\uploadPhoto.png");
is = event.getFile().getInputstream();
OutputStream os = new FileOutputStream(file);
setUserPhoto("\\EventsCalendary\\resources\\images\\"+file.getName());
byte buf[] = new byte[1024];
int len;
while ((len = is.read(buf)) > 0) {
os.write(buf, 0, len);
}
os.close();
is.close();
} catch (IOException ex) {
System.out.println(ex.getStackTrace());
}
为什么只有在重新加载页面后才会显示上载的图像?我如何解决此问题?您将文件直接写入IDE的项目文件夹,并且您的意图似乎是将文件保存在webapp的部署文件夹中。这是一个不好的主意,也是因为以下三个主要原因:
/var/webapp/uploads
。然后,要让您的webapp为其提供服务,只需将其作为新的web应用程序上下文添加到服务器
根据您之前的问题,我知道您正在使用Glassfish 3.1。在这个服务器中,它被称为“虚拟主机”。您可以在管理控制台的>配置>HTTP服务>虚拟服务器的服务器级别上配置它,或者在webapp级别上通过将以下行添加到/WEB-INF/glassfish WEB.xml
(您的IDE应该已经自动生成了一个文件;请注意,该文件在名为sunweb.xml
的Glassfish 3.1之前,因此,如果您看到手册/博客/教程引用它,那么它是完全相同的文件):
无论采用哪种方式,您都应该能够使用*以通常的方式为
上传的图像提供服务
另见:
- (包含一个Tomcat配置示例)
- (包含JBoss配置示例)