【发布时间】:2021-04-14 17:35:36
【问题描述】:
我正在尝试将图像从服务器加载到我的 JSP
我的文件是:
image.jsp
<img src='servlet1' height='300px'/>
DisplayImage.java
public class DisplayImage extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{
response.setContentType("image/jpeg");
ServletOutputStream out;
out = response.getOutputStream();
FileInputStream fin = new FileInputStream("path/to/my/img.jpg");
BufferedInputStream bin = new BufferedInputStream(fin);
BufferedOutputStream bout = new BufferedOutputStream(out);
int ch =0;
while((ch=bin.read())!=-1){
bout.write(ch);
}
bin.close();
fin.close();
bout.close();
out.close();
}
}
我应该构建的应用程序是一个车辆目录,我可以在其中上传图像,这些图像存储在 /home/upload/ 外部 CATALINA 的文件夹中
(注意:我没有使用项目目录中的文件夹,因为我正在通过 *.war 文件部署项目,当需要新版本时会删除其中的所有文件部署。)
我想根据搜索参数显示详细信息和图像。
( 编辑:我上传文件时将文件名存储在数据库中,因此可以从数据库中获取特定车辆的图像名称列表,因为它存储在文件夹/home/upload/ ,完整路径将类似于/home/upload/fileName.jpg,我需要将其传递给 servlet 以加载)
我面临的问题是:
image src 属性被指定为servlet1,servlet 默认提供来自 DisplayImage.java 文件中定义的路径的图像
有什么方法可以将/another/file/Path.jpg 或fileName.jpg 传递给servlet,以便我也可以显示其他图像文件,
【问题讨论】:
-
请更清楚您想要实现的目标。您想如何将图像路径传递给您的 servlet?通常你有一个包含图像的文件夹,并让默认的 servlet 传递图像。或者您的 servlet 可以评估 URL 路径或 GET 参数以确定图像名称。您应该首先定义预期的行为,然后考虑实施。
-
这个有帮助,不知道将参数传递给 Servlet ,将
src从servlet1?imagePath=/home/upload/one.jpg更改为非常感谢 -
你应该小心这种绝对路径。这可能是一个安全漏洞。有人可以使用您的 servlet 读取您系统上的每个文件。
-
不,我只是在 src 属性中传递文件名,如:
<img src="servlet?img='myImage.jpg' alt='Image not loaded' />并且路径在 servlet 内部进行评估。感谢您提及该漏洞:)
标签: java image servlets tomcat8