我已将一些图像保存到pc的本地路径,并将文件名保存到db。现在我想从db加载所有图像并使用java脚本和thymemleaf显示到html页面。浏览器说不允许加载本地资源,所以我在spring boot中创建了一个servlet。但它没有显示图像。
Servlet
@WebServlet("/admin/imgServlet")
public class AdminImageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
String urlImage = request.getParameter("admin");
response.setContentType("image/jpeg");
ServletOutputStream out;
out = response.getOutputStream();
FileInputStream fin = new FileInputStream("C:/Users/Public/Documents/" + urlImage);
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();
}
}
@Bean
public ServletRegistrationBean adminImageServlet() {
DispatcherServlet dispatcherServlet = new DispatcherServlet();
AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
applicationContext.register(AdminImageServlet.class);
dispatcherServlet.setApplicationContext(applicationContext);
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(dispatcherServlet, "/admin/imgServlet");
servletRegistrationBean.setName("imgServlet");
return servletRegistrationBean;
}
用于加载图片的Java脚本
'<img src=imgServlet?admin='+articles.bannerImg+' class="img-responsive" />'
错误我收到imgServlet:1 GET http://localhost/techtalks/admin/imgServlet?admin=pyjc4x0B.jpeg 404 (Not Found)
我还想将图像从本地资源加载到百万美元的html页面
model.addAttribute("localImg", "E:\\picz\\assasins.jpg");
弹簧控制器将像这样传递模型,它会将图像传递到相应的文件到这样的html页面。
<img th:src="@{${localImg}}"/>
答案 0 :(得分:1)
您的Servlet代码适合我。我能够成功获得图像。
我认为问题很可能是文件名。请输入如下文件名(即jpeg中没有'e')。
如果文件出现在您引用的本地路径中,它应该有效。
pyjc4x0B.jpg