常见问题 —— 商场多图片显示头图问题
2018-03-07 05:39
211 查看
问题描述:
在做商城项目时,上传图片用于搜索时显示头图,当上传单张图片时可以正常显示,上传多张图片时不现实头图
报错信息:
访问图片报400错误
原因分析:
当有多张图片上传时,因为使用了solr的原因,多图片地址使用json格式写在一起。当取出图片时,取出的地址为String,String中可能存在多个使用逗号隔开的图片地址,这时直接使用此String作为图片地址会产生错误,从而得不到正确的头图
解决方法:
方法一:将头图和详情显示的多图分开存入数据库
方法二:商品上传到solr索引库时,只上传头图
方法三:取到solr索引库中的图片地址后,再取其中的一张作为头图
方法一的缺点时增加了数据库的负担和操作的复杂性
方法二和方法三上传的地址都是字符串,对数据库的操作没有改变,因为考虑到热点商品高并发访问的问题,需要用到redis缓存数据,缓存的商品数据越少越好,减轻服务器的压力。综合考虑可以选择方法二进行头图显示。
修改上传solr索引库的商品图片为n个图片的第一个
上传商品信息到索引库
更新索引库(删除之后再上传,或者使用ActiveMq实现)
索引库更新后,再上传就不会出现问题了
在做商城项目时,上传图片用于搜索时显示头图,当上传单张图片时可以正常显示,上传多张图片时不现实头图
报错信息:
访问图片报400错误
原因分析:
当有多张图片上传时,因为使用了solr的原因,多图片地址使用json格式写在一起。当取出图片时,取出的地址为String,String中可能存在多个使用逗号隔开的图片地址,这时直接使用此String作为图片地址会产生错误,从而得不到正确的头图
"images":["http://192.168.25.131/group1/M00/00/00/wKgZg1qdGIGAImsLAAK1asSSzZc991.jpg","http://192.168.25.131/group1/M00/00/00/wKgZg1qdGIGALTovAAT9Jeh1RYQ412.jpg"]
解决方法:
方法一:将头图和详情显示的多图分开存入数据库
方法二:商品上传到solr索引库时,只上传头图
方法三:取到solr索引库中的图片地址后,再取其中的一张作为头图
方法一的缺点时增加了数据库的负担和操作的复杂性
方法二和方法三上传的地址都是字符串,对数据库的操作没有改变,因为考虑到热点商品高并发访问的问题,需要用到redis缓存数据,缓存的商品数据越少越好,减轻服务器的压力。综合考虑可以选择方法二进行头图显示。
修改上传solr索引库的商品图片为n个图片的第一个
public String getImage() { String img = image; try { String[] images = img.split(","); String image = images[0]; return image; } catch (Exception e) { e.printStackTrace(); } return image; }
上传商品信息到索引库
public Result ImportItemsToIndex() { try { //1、查询商品列表 List<SearchItem> itemList = itemMapper.getItemList(); //2、遍历添加 for (SearchItem searchItem : itemList) { //2.1、新建文档对象 SolrInputDocument document = new SolrInputDocument(); //2.2、向文档中添加域 document.addField("id", searchItem.getId()); document.addField("item_title", searchItem.getTitle()); document.addField("item_sell_point", searchItem.getSell_point()); document.addField("item_price", (long)searchItem.getPrice()); document.addField("item_image", searchItem.getImage()); document.addField("item_category_name", searchItem.getCategory_name()); document.addField("item_desc", searchItem.getItem_desc()); //2.3、把文档写入索引库 solrServer.add(document); } //3、提交 solrServer.commit(); } catch (Exception e) { e.printStackTrace(); Result.build(500, "数据导入失败!"); }
更新索引库(删除之后再上传,或者使用ActiveMq实现)
索引库更新后,再上传就不会出现问题了
相关文章推荐
- intellij IDE build出错,无法显示图片,找不到tomcat server,java编译版本过低,异常推出后无法启动项目等常见问题解决
- 常见字体显示不全、图片上文字覆盖等问题
- iOS常见问题之异步加载图片在UITableView里显示时的奇异的现象
- ios-UI常见问题之TableView异步加载图片错乱显示
- android ListView常见问题解决方法(滚动背景变黑,去除滑动时阴影,拖动时Item图片不显示)
- 解决WIN10系统Eclipse中图片显示乱码问题
- GEF常见问题1:为图形编辑器设置背景图片
- iOS7修改UITabBar文本颜色以及解决自定义选中图片显示为默认蓝色的问题
- 关于SSH中tomcat下中文名称图片不显示的问题
- 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
- asp 验证码不能显示图片的问题
- PHP5.4+IIS7+WINSRV2008 imagepng无法显示图片的问题
- javascript 火狐(firefox)不显示本地图片问题解决
- 水晶报表图片不显示两种问题分析及解决方法
- cocos2d-x如何解决图片显示模糊问题
- Android ListView 图片乱显示问题
- DotNet2005Webform应用CrystalReportWebForm组建在IIS环境不显示Toollbar图片问题及解决办法
- 图片显示的问题
- struts2文件上传与下载与图片显示所遇到的问题
- 《程序猿的第n+2天》-Myeclipse下图片无法显示问题