常見問題 —— 商場多圖片顯示頭圖問題

問題描述:
在做商城項目時,上傳圖片用於搜索時顯示頭圖,當上傳單張圖片時可以正常顯示,上傳多張圖片時不現實頭圖

這裏寫圖片描述

報錯信息:
訪問圖片報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實現)

這裏寫圖片描述

索引庫更新後,再上傳就不會出現問題了
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章