从本地源加载动态图像

时间:2016-11-10 06:24:17

标签: spring-boot thymeleaf

我已将一些图像保存到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}}"/>

1 个答案:

答案 0 :(得分:1)

您的Servlet代码适合我。我能够成功获得图像。

我认为问题很可能是文件名。请输入如下文件名(即jpeg中没有'e')。

如果文件出现在您引用的本地路径中,它应该有效。

pyjc4x0B.jpg