我试图在webapp中加载一个文件,FileNotFound当我使用时我得到了一个例外FileInputStream.但是,使用相同的路径,我能够在我这样做时加载文件getResourceAsStream().这两种方法之间有什么区别,为什么一种方法有效而另一方方法无效?
我在这里读到,无论如何都不应该将文件保存在服务器中,因为它不是可移植的,事务性的并且需要外部参数.但是,鉴于我需要一个针对tomcat(7)的tmp解决方案,并且我对服务器机器有(相对)控制,我想知道:
保存文件的最佳位置是什么?我应该保存/WEB-INF/uploads(建议不要在这里)或某个地方$CATALINA_BASE(见这里)或......?JavaEE 6教程从用户获取路径(:wtf :).注意:该文件不应以任何方式下载.
我应该建立一个配置参数详见这里?我很欣赏一些代码(我宁愿给它一个相对路径 - 所以它至少是Tomcat可移植的) - Part.write()看起来很有希望 - 但显然需要一个绝对的路径
我对这种方法与数据库/ JCR存储库的缺点的阐述感兴趣
不幸的是 ,@ BalusC 的FileServlet专注于下载文件,而他在上传文件时的答案会跳过保存文件的位置.
容易转换为使用DB或JCR实现(如长耳兔)的解决方案将是优选的.
上传图片时,文件已成功保存并且路径已成功设置.但是在表单提交后不会立即显示上传的图像.仅当我重新加载页面时,才会显示上传的图像.
我正在保存上传的文件,如下所示:
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());
}
Run Code Online (Sandbox Code Playgroud)
为什么上传的图像仅在重新加载页面后显示,我该如何解决?
我在index.xhtml文件中显示图像时遇到问题.
我希望我的数据库中的链接指向图像文件,以便一个<h:graphicImage/>或<img />标记可以显示它.目前仅使用localhost.
我已设法将图像保存到c:\ var\webapp\images \并添加<property name="alternatedocroot1" value="from=/images/* dir=/var/webapp" />到我的glassfish-web.xml并使用:
<h:graphicImage value="#{entity.imageLink}" />
<img alt="#{entity.title}" src="#{entity.imageLink}" />
Run Code Online (Sandbox Code Playgroud)
但我从来没有设法显示任何图像!应该在我的数据库中写什么来显示保存在c:\ var\webapp\images\imageExample.jpg中的imageExample.jpg?我的想法是问题出在我的道路上,但我可能错了.
我正在使用Apache公共文件上载库和Netbeans 6.8 + Glassfish.我正在尝试将当前上载路径更改为位于servlet的当前上下文路径中,如下所示:WEB-INF/upload
所以我写道:
File uploadedFile = new File("WEB-INF/upload/"+fileName);
session.setAttribute("path",uploadedFile.getAbsolutePath());
item.write(uploadedFile);
Run Code Online (Sandbox Code Playgroud)
但是我注意到库将上传的文件保存到glassfish文件夹中,这是我打印上传文件的绝对路径时得到的:
C:\Program Files\sges-v3\glassfish\domains\domain1\WEB-INF\upload\xx.rar
Run Code Online (Sandbox Code Playgroud)
我的问题 :
我正在使用JSF和glassfish 4.0.我知道可以直接访问项目资源文件夹下的images目录中的所有图像.我想知道如何显示位于玻璃鱼文件夹中的图像.我在玻璃鱼域下创建了一个图像文件夹,我想在JSF页面中显示这些图像.有人能告诉我怎么做吗?我是新手,所以需要一些帮助.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
<property name="alternatedocroot_1" value="from=/images/* dir=/test/webapp" />
<class-loader delegate="true"/>
<jsp-config>
<property name="keepgenerated" value="true">
<description>
Keep a copy of the generated servlet class' java code.
</description>
</property>
</jsp-config>
</glassfish-web-app>
Run Code Online (Sandbox Code Playgroud)
JSF页面:
<header>
<h:graphicImage id="banner" style="width:700px;height: 52px;"
value="/images/header.jpg" />
</header>
Run Code Online (Sandbox Code Playgroud) jsf ×3
servlets ×3
file-upload ×2
java ×2
file-io ×1
glassfish ×1
glassfish-4 ×1
image ×1
java-ee ×1
jsf-2 ×1
refresh ×1
servlet-3.0 ×1
tomcat ×1