二手商城商品发布时多张图片上传和存储的解决办法

用户在发布二手商品时,需要填写二手商品的一些信息,然后上传详情图,如下图所示:

二手商城商品发布时多张图片上传和存储的解决办法_第1张图片

但是用户发布的图片可能不止一张,图片上传成功后怎么把图片的路径存到数据库中。

有两种方法,一种是把所有的路径通过拼接,以特殊符号隔开,如“;”,然后存到一个字段中,取出时再根据分隔符分割取出。

第二种是单独用一张表,存储图片路径和对应的商品id.

我选择的是第二种。

那么数据都是同时传到后台的,商品信息还没存储,也就没有商品id,所以我们处理时要有先后顺序,先存储商品信息,然后找出商品id后再存储图片。

上代码。

js:


这里我用的是layui的多图片上传,先定义一个全局数组img,然后上传成功后遍历写入图片的src。

接下来是确认发布的点击事件,把获得的商品信息和img数组一起传给后端。

java:

/**
     *@Author:  on 2020/3/20 14:23
     *增加商品
     *@return
     */
    @PostMapping("/addShop")
    public JSONObject addShop(Shop shop, String title, String type, String detail, double oldMoney, double money, HttpServletRequest request){
        JSONObject jsonObject = new JSONObject();
        String [] img = request.getParameterValues("img[]");/*接收前端传来的图片地址数组*/
        if (!CheckSession.checkSession()){
            jsonObject.put("code",0);
            return jsonObject;
        }else {             /*先将处图片外的其他信息存入商品表*/
            Integer userId = GetUserId.getUserId();
            String time = Now.getNowTime("yyyy-MM-dd HH:mm:ss");
            shop.setType(type);
            shop.setTitle(title);
            shop.setDetail(detail);
            shop.setOldMoney(oldMoney);
            shop.setMoney(money);
            shop.setSeller(userId);
            shop.setTime(time);
            shopRepositories.save(shop);
            Integer shopId = shopRepositories.findByTime(time).getId();/*再取出添加成功后的商品id*/
            if (img==null||img.length<1) {/*判断用户是否给商品上传了图片,没有的话封面设置为默认封面图片*/
                shopRepositories.changCover(shopId,"/userImages/shop/shop.jpg");
            } else {/*有上传图片的话把第一张设置为封面,并把图片数组存入图片表中,并标记商品的id*/
                shopRepositories.changCover(shopId,img[0]);
                for (int i=0;i

如果用户没有给商品上传图片,则存储一个默认的封面图,如果用户上传了图片,就把第一张作为封面图,以便在展示时调用图片。剩下的存入图片表,详情页查询使用。

你可能感兴趣的:(java,javascript)