为了账号安全,请及时绑定邮箱和手机立即绑定

来自 DB 的图像不会在 JSP 中显示:未找到 HTTP 请求的映射

来自 DB 的图像不会在 JSP 中显示:未找到 HTTP 请求的映射

qq_花开花谢_0 2021-10-13 16:08:28
我在我的控制器中得到了这个:@RequestMapping(value = "details", method = RequestMethod.GET)public ModelAndView details(@Valid @ModelAttribute("MessageForm") final MessageForm form, @RequestParam("publicationid") String publicationid) {    final Publication pub = ps.findById(Integer.valueOf(publicationid));    final User user = us.findById(pub.getUserid());    final ModelAndView mav = new ModelAndView("details");    long myid = pub.getPublicationid();    UploadFile ufa = imageServiceImp.findFirstById(Long.parseLong(publicationid));    System.out.println("mi publication id es " +ufa.getPublicationId());    System.out.println("mi id de upload es " + ufa.getId());    System.out.println("mis bytes son " + ufa.getData().toString());   // these prints work fine    try {        Image img = ImageIO.read(new ByteArrayInputStream(ufa.getData()));        mav.addObject("image1", img);    } catch (IOException e) {        // TODO Auto-generated catch block        e.printStackTrace();    }    //other stuff    return mav;}所以我在我的 JSP 中做了以下内容来显示图像:  <img class="mySlides" src="<c:out value="${image1}" />" >结果当我进入这个页面尝试我的程序时收到以下消息(图像当然不显示): Sep 26, 2018 11:27:23 PM org.springframework.web.servlet.PageNotFound noHandlerFound WARNING: No mapping found for HTTP request with URI [/null/meinHaus/BufferedImage@4c8d98b4:%20type%20=%205%20ColorModel:%20] in DispatcherServlet with name 'dispatcher'会发生什么?我正在使用 spring-mvc。getData() 也返回一个 byte[] 类型的数组。
查看完整描述

1 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

这不是您应该加载图像的方式。


在控制器类中编写一个方法,如下所示。


@RequestMapping(value = "/users/getProfilePic/{uniqueId}",method = RequestMethod.GET)

    public ResponseEntity<byte[]> getProfilePic(@PathVariable long uniqueId) {


        try{ 

            //reading image from tomcat folder you can read from the place where you stored the images

            String rootPath = System.getProperty("catalina.home");

            String profilePicDirectory = rootPath + File.separator + "profilePictures" + File.separator  + uniqueId;

            String profilePicFile = profilePicDirectory +  File.separator + uniqueId +".jpg";


            RandomAccessFile f = new RandomAccessFile(profilePicFile, "r");

            byte[] b = new byte[(int)f.length()];

            f.readFully(b);

            f.close();

            final HttpHeaders headers = new HttpHeaders();

            headers.setContentType(MediaType.IMAGE_JPEG);

            return new ResponseEntity<byte[]>(b, headers, HttpStatus.OK);

        }catch(Exception ex){

            //ex.printStackTrace();

            final HttpHeaders headers = new HttpHeaders();

            return new ResponseEntity<byte[]>(null, headers, HttpStatus.NOT_FOUND);

            //return null;

        }

    }

然后在jsp页面中调用这个url来加载图像。


<img class="mySlides" src="/users/getProfilePic/${imageUniqueIdURL}" />


查看完整回答
反对 回复 2021-10-13
  • 1 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信