【问题标题】:Chrome Displays Irregular Random String Instead Of ImageChrome 显示不规则的随机字符串而不是图像
【发布时间】:2017-01-09 11:36:27
【问题描述】:

我正在尝试编写一个 HttpEntity 响应体,我可以根据它们的 id 获取图像。但是我无法在 chrome 上显示图像。我在不同的java代码中测试过:

    FileInputStream fin = new FileInputStream(url);
    ServletOutputStream out = response.getOutputStream();

    OUtils.copy(fin, out);
    IOUtils.closeQuietly(fin);

    response.flushBuffer();

    InputStream IS = new BufferedInputStream(new FileInputStream(url));
    BufferedInputStream in = new BufferedInputStream(IS);
    BufferedImage image = ImageIO.read(in);

    try (InputStream inputStream = IS) {
        OutputStream out = response.getOutputStream();
        ImageIO.write(image, "png", out);
        out.close();
        imageIS.close();
    } catch (IOException e) {
        // handle
    }
    return new ResponseEntity<Image>(HttpStatus.OK);

它在资源管理器中运行良好但是,而不是图像,在 chrome 中我得到这样的:

‰PNG

���
IHDR����h���“ǵa��€�IDATxÚt¼…wYÖö›¦éy§‡»{:2IfŒ™™eK¶˜ÁZ’eË$ƒÌÌL±“8Ƙ™™c;àd¾ï/¹»TIfî»î]ëY•R¹ttª¢Ú¿óì}îñH4>™. 0b¨LìÀ.‘ÊÁGó¢(\YHa&ƈ²âã+´eY©²)“/ª.Ìo©ª†­6^Ì$Æğ’D1i2©F¡ÈT©ò5é%Ú좬œìMZ¼*I§ŒÊ8<   ‹%f2e,–„Á€8.?A(ãrÉÁA^6–ÎX[ÆÉؘè뛣NÙ9Ğß?ñ¬­½®<¿9[ıª$u¤&e¹«xg¢m{~pgse}}}vn¹¿o¸º¬6?³  =?/-7G“›—‘WœUXš]\–_^^TYV\UVRY^TQZPR˜_R]˜Ÿ™Ÿ›—¯Éƒwåeäg§åd©3Ó”)I²ÄøX¹Œ+1ù14–Á1XB:SÌæÈùB¥P’(U&+“5‰éš¤ôŒ”¬¬mNJv~š¶4+«¶ ³µ<çeUv_]îPcşxSşT[ş|gşbWÁrwÑZ_Éæëòíáò¡Ò¡â½‘Ò½Ñâİ‘¢½±¼ı±âéòÃ骃©êıÉŠ½‰Òݱ⑒íáâí‘Âa^çoôf¯¾Ê\~?×$™¨búr_¥ûu$z¶ÈœŠ˜Ö™Ñæò`s¦‡)ÁÑïbíeÏq“à£ålZ¢T ì,ÉXì-İ_h?ß{{¹üáfóûÃ.î>Ü€>}xóéıÅÇw§wo?Ş|¼Ù½»Ş¹»Şº»İşx»÷éíá¿ß}|toy»ww»õñzõÓ›¥OWsŸ.Æ>ö<ê}·×ıvóÙ›…ò󉌽áú3ÊR~¥™µÒ![}¿Ò¥Z•°Ñ!Ym¦¯Ô…¯7â6ÚHk­ È•¿•†ùÊ ¹âÀ±l·á,û—É–µó–i1Û¨:Ó*3îQ[§»ŒjİG²{Ò-Ÿ+후Õã*–IÍ$ŸˆÍ6ÍÆ›dŒµ‘ÆáFa†9á¥Qúud½*È ™¢ßB~ÒF{òŒ¡j¥éÃÁ:¢~ި8Ü8/Ü2ï˜Nö×°£Óœ™<E‘¨V&'ŧ$)’àÿQ\b’2-E•š‘’†H÷×Y‚"&NÊ™11®€Êñ),.‰Á¥09dÊĞ9ğ§şÄ#2ØÑLÇEøã|½#ıü¢ƒ‰Á¡¤ÈHVYDåıbâx¹@-+c¤²™2V/ŠSÄJe|‘˜#dñ¡M>*–γq<‘2&ùÇÄ)bäq|©„#‚/3|“ci,xº9Ñv¶ğŒCg$ÜX  _"ÆÉÅŠx™*AJT$%)’A   ²D¥D.‘ÀÇ    ¨L&D
€Nâıı£@°O   Ã1ğDDİeÆĞùˆX1B$⊋•
‰ÚWÅ%‚”RU\lœˆ+`ñ Yx/\24B‹ˆ"‡ECpQAap7ğş8¿0/¯0PwwPˆ›[ ³s€“(ÈÅ^†zzGÃ"È8<›Dı|7(,>‰) ÒØ‘DF(SâÃ*Øá#jânëªAôöYüÛWIºÕÿ~)ÿ¿ü7á?UyŞ•Ú]ç¿WıñVñÃ¥øÛÁ½}ö·kÌoißÍP¾%şq”ø§âŸFI?Ò~güe‚ñ÷  ÆÏ£”ÿуûç³ Ÿ«ıîg{>V8>Ø<ˆ²ÒÃ[èÌÓmôÄ®z©AOJ¢ÖÓ½àêõˆŒ&ƒ ¦C‰f#‰f£ñ&#rÃá¸ÇıÂ'½ü'=œ']ÌÇ”‡mć̈́G•ÁFÅşJ~kúWOäïst£©íyšÇu  ímMÌ»fÅmKâMkâÛå»zñM%r¦Åª}7âœùV“Tã×ј—xıöPLc ¦ÚSæƒ-ö6.õ3.óÇV›Ô‡™ÔáLËBŒ3}Œå®¦,;Óps#?¬ÆÈÇëÅxbÜÜLœõ°O@ö¬!líõõ±Ff†~–Q.†‚ ƒ{ÿPáˆüh*HDe©c¥�•²ÌàJ¶BªàR2ãÅ5E…mµ
õ¥%9‰   )±±IBA²*YñJmbbAZZq–¶(3+75-M¯–Êâcbd”ÉÑhb:]L#Kô86KÁåÄIx_/Ok€Š=ãnfB    È'TWrÒÓ3âêÒ•/
‡ª’–ŸçoµlͽŞİXÙX¨,ôõ
T•Væ¦çækr³Ó²s49¹™yÅ9Å¥y¥@”ò’êŠÒDÅ•e…åyÅy9…yYK€+è6+-[›”õ*2)'B>Üä9¤ÅPéğRÆQ
eV ¤&j²R²²“³r’3ŠÒµ5y¹­eù/jò{
†šÆÛ‹æ—.u•¯t—¯÷Ul
VnUîÕLÔNÖNVƒ&*A‡ãG“eG“å'3u'³Ç3
GÓõ‡ÓpZåşxù4Z¶;\²=X´õºp§7gıe: e¾Y<]Ë+§äF¼Hõo’¹Vğ´”§Êpa€×ß‘à*ó‘C<F’4¦*=a¢½|wæÙÙöÀûÓùwoÖßßî~üpzw÷æÃİg¨|D r‚BåN@…
ü   ôA•o·?İlÜ]/}¼œıx>úñäõ‡£ş÷{}·[ϯ–ªÎ¦µ½’êJKÔzwã¥r³G½Õ›¸Ñ­Ú~)Ü줭·á7ŸEm¶×špËÕ~óenÓÅ®¯3_©íÛe6b˶i:ÁXˆMÁçR,*¹-b«.•ı`šëH¦ç@šÓ+µcGœucŒi=Ϭ‚aR@2¨dE`3qÆ ¬-Î$/[iXK4l&´R�!mTıvº^ÓàÓ nĞJ3l V0e8“üpó¬H‡t’¯†•Îg§Éd©rUò¨¨eğNPËÕÉñ*‰ Jª*-Y™URDß±LDjj<2ˆÂŠ¢²£iÌh*›Dº@ÌEã'ŠÆÀSiÄèPœŸo˜·'ÎLJC "¤qå\   àA.”T qˆì€“¯DA>ˆÁ…�Š„BÆCr¾X!N@À9[�B`¦{´(,   tÈËF¸QB?\�21N­–'ÁV%M€ï¼”'„ã’hôÈhrh8„{@ !J0¼¤á"6�¸4œt~,C�p±bÅl*R® ¥”Æ¥@ñó…1l>4×-ƒ(áxRh
¸ÿ*€`WW”((Tàeˆ‡ÎÏΨ°ˆä븗ËÁñNZLí“…¯gFŸ•Qo¸Z[ØŸêÉÿ§*äßÅÎsLï2_'ıãü»+Éwg±ßqïí°¿A Bÿv–úÍù   ê' ?Œ1~¥ıÏ寃¤¿õşö<üoõ¿yİOr~(²Öc™ë‘Ìi–z‡Ç*ŸG¹k™Ÿ‹÷Æë
'¥šO¤[gZOfXO¦[M¤š«GäOúEº¸¿wĞï·’ï7D=¨xXò¸ÀO/Çëa±ßÃÆàßğ–ØFûñöo²ƒn˹ïëÄï›U·mÉ7­I·Í 7uÒ7üóbÊiVøÚk]æ°À³�¨0/"ŒÚBŒêü
«|J½1E^Øb?,@¥2ȸ.Ä¢&Ô¬$«ñ1’¹a&a–†¾fz>fş@@…ÉS=_SC3#oSCSwD†®Æú.X=غ›b|Ìõ‚-
È®¢Ã{(N`ƒ
å......

【问题讨论】:

  • 您是否设置了正确的内容类型?
  • 是的,我想。 @Produces(“图像/*”)。它工作正常,除了 chrome。
  • 您应该在 chrome 调试工具中检查响应的标头。如果没有内容类型的标题,它可能会解释你看到的乱码

标签: java spring google-chrome


【解决方案1】:

确保您在响应中发送正确的 http 标头。

例如,对于 png,您应该发送一个带有值 'image/png' 的 'content-type' 标头。

【讨论】:

  • @Produces("image/*") 并添加 response.setContentType("image/png");
猜你喜欢
  • 2012-03-09
  • 2021-11-30
  • 2011-05-13
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
  • 2017-09-03
  • 2023-01-22
  • 2011-08-06
相关资源
最近更新 更多