通过Javaservlet动态加载图像
我正在尝试将图像从服务器加载到JSP 我的档案是: image.jsp通过Javaservlet动态加载图像,java,image,servlets,tomcat8,Java,Image,Servlets,Tomcat8,我正在尝试将图像从服务器加载到JSP 我的档案是: image.jsp <img src='servlet1' height='300px'/> 我应该构建的应用程序是一个车辆目录,在这里我可以上传图像,这些图像存储在/home/upload/文件夹外CATALINA (NB:我没有使用项目目录中的文件夹,因为我正在通过*.war文件部署项目,当需要部署新版本时,该文件会删除其中的所有文件。) 我想根据搜索参数显示详细信息和图像 (编辑:我上传文件时,文件名存储在数据库中,因此可以
<img src='servlet1' height='300px'/>
我应该构建的应用程序是一个车辆目录,在这里我可以上传图像,这些图像存储在/home/upload/
文件夹外CATALINA
(NB:我没有使用项目目录中的文件夹,因为我正在通过*.war文件部署项目,当需要部署新版本时,该文件会删除其中的所有文件。)
我想根据搜索参数显示详细信息和图像
(编辑:我上传文件时,文件名存储在数据库中,因此可以从数据库中获取特定车辆的图像名列表,因为它存储在文件夹/home/upload/
中,完整路径类似于/home/upload/fileName.jpg,我需要将其传递到servlet进行加载)
我面临的问题是:
image src属性被指定为servlet1
,默认情况下,servlet从DisplayImage.java文件中定义的路径提供图像
是否有任何方法可以将/other/file/Path.jpg
或fileName.jpg
传递到servlet,以便我也可以显示其他图像文件,是的,在JSP中,您可以在请求中传递搜索参数。
像
}请更清楚地说明您想要实现的目标。您希望如何将映像路径传递到servlet?通常,您有一个包含图像的文件夹,并让默认servlet交付图像。或者,servlet可以计算URL路径或GET参数以确定图像名称。您应该首先定义预期的行为,然后考虑实现。这有帮助,不知道如何将参数传递给Servlet,将src
从servlet1?imagePath=/home/upload/one.jpg
更改为。这可能是一个安全漏洞。有人可以使用servlet读取系统上的每个文件。不,我只是在src属性中传递文件名,如:
,路径在servlet中计算。感谢您提到该漏洞:)您好,我正试图从
中的src属性调用servlet,无论如何,感谢您抽出时间
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();
}
}
<input id="imageSerach" name="imageSerach"/>
<div id="ImageContent"/>
$.ajax({
url: servleturl,
data: {
imageSerach : $('#imageSerach').val()
},
success: function(responseData){
$('#ImageContent').html('<img src="data:image/png;base64,' + responseData + '" />');
}
});
String fileName = req.getParameter("imageSerach");
response.setContentType("image/jpeg");
ServletOutputStream out;
File f = new File("path/of/file/"+fileName);
if (f.exists())
out = response.getOutputStream();
FileInputStream fin = new FileInputStream("path/of/file/"+fileName);
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();
else
// no file exit
}