我有一个存储在某个位置的图像说:C:\ Users \ admin \ Desktop \ SharedCrpto1 \ web \ RetrievedFiles \ FILE310 @ ST-testemp \ abc.png。现在我尝试在我的jsp页面中显示它即使图像路径正确,图像也不会显示。
在我的服务器处理客户端提供的浏览图像后,将显示此图像。
我试过了:
<img src="<%=path%>" alt="No image" />
我的servlet正在创建特定文件夹中的图像,如下所示:
File filesstore = new File("C:\\Users\\admin\\Desktop\\SharedCrpto1\\web\\RetrievedFiles\\FILE310@ST-testemp\\");
if(!filesstore.exists())
{
System.out.println("MAKING DIRECTORY..");
filesstore.mkdirs();
}
To copy one file to this location I did :
FileInputStream fis = new FileInputStream("C:\\test.png");
int xx=fis.available();
byte[] b = new byte[xx];
fis.read(b);
FileOutputStream fos=new FileOutputStream("C:\\Users\\admin\\Desktop\\SharedCrpto1\\web\\RetrievedFiles\\FILE310@ST-testemp\\abc.png");
fos.write(b);
我做错了吗?请帮忙
答案 0 :(得分:0)
根据您的问题,我理解的是您想要从本地文件系统读取图像文件&amp;使用显示在jsp页面中
第1步 为此你需要一个servlet或jsp来读取文件并转换为byte []并再次将byte []写入ServletOutputStream。
第2步: 创建一个JSP页面,其中包含一个img标签&amp;它的src应该指向servlet url而不是真正的文件路径。由于img标签的src属性可以采用文件路径或字节流。在这里我们给它字节流,因为文件路径不起作用。
当你调用你的jsp页面时,它会尝试渲染img标签,那时它会调用你的servlet&amp;获取图像数据的字节流。因此它将渲染您的图像
图片Servlet
@WebServlet("/ImageServlet")
public class ImageServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//place your file path
File imageFile =new File("/home/ashok/Pictures/Siberischer.jpg");
ServletOutputStream outputStream = response.getOutputStream();
byte[] imageBytes = FileUtils.readFileToByteArray(imageFile);
outputStream.write(imageBytes);
outputStream.close();
}
}
JSP PAGE(显示图片)在你的jsp中只需写下这个标签
JspPage是应用程序名称&amp; ImageServlet是servlet url模式
<img alt="NO IMAGE" src="/JspImage/ImageServlet">
FileUtils存在Apache Commons IO Library将jar下载到您的项目中