Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Javaservlet动态加载图像_Java_Image_Servlets_Tomcat8 - Fatal编程技术网

通过Javaservlet动态加载图像

通过Javaservlet动态加载图像,java,image,servlets,tomcat8,Java,Image,Servlets,Tomcat8,我正在尝试将图像从服务器加载到JSP 我的档案是: image.jsp <img src='servlet1' height='300px'/> 我应该构建的应用程序是一个车辆目录,在这里我可以上传图像,这些图像存储在/home/upload/文件夹外CATALINA (NB:我没有使用项目目录中的文件夹,因为我正在通过*.war文件部署项目,当需要部署新版本时,该文件会删除其中的所有文件。) 我想根据搜索参数显示详细信息和图像 (编辑:我上传文件时,文件名存储在数据库中,因此可以

我正在尝试将图像从服务器加载到JSP

我的档案是:

image.jsp

<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
   
}