修改商品时,会将原有的图片信息展示,我们的操作可删除可增加,数据库图片的字段:xxx.png,yyy.png,zzz.png
删除,yyy.png这张图片,再增加一张新图片
一、图片上传后得到的图片路径
//图片上传
private String getUploadPicFullName(MultipartFile[] pic ,HttpServletRequest request){
String picFileNameAll = "";
if(pic == null || pic.length <= 0){
return picFileNameAll;
}
if (pic != null && pic.length > 0) {
int picsLength = pic.length;
for (int i = 0; i < picsLength; i++) {//这个是for循环
if(pic[i] != null && !pic[i].getOriginalFilename().equals("")){//编辑时已有的图片会传"",添加图片的input也会带一个""
String itemPicUploadFileName = imageUploadBizImpl.uploadImage(pic[i], folder, request);
if (picFileNameAll.equals("")) {
picFileNameAll = itemPicUploadFileName;
} else {
picFileNameAll = picFileNameAll + "," + itemPicUploadFileName;
}
}
}
}
return picFileNameAll;
}
注意在修改时,现有图片上传的 时候会传一个空字符串,此时就不操作
二、执行删除的一系列逻辑
private String getModifyPicFileName(String delPic,String oldPicFileName,String uploadPicFileNameAll){
//原数 路径据库
String[] oldPic = oldPicFileName.split(",");
//原主图路径减去删除的图片路径
if(delPic != null && !delPic.equals("")){
String[] picDelNum = delPic.split(",");
//用户删除时会不按顺序删除,因此需要事先排序,然后转成集合进行删除对应图片
Arrays.sort(picDelNum);
List<String> picList = Arrays.asList(oldPic);
List<String> allPicList = new ArrayList<String>(picList);
//必须从后往前删,不然下标会弄错
for(int i = picDelNum.length-1;i >= 0;i--){
allPicList.remove(Integer.parseInt(picDelNum[i]));
}
//去掉删除的图片后留下的图片路径
String leavePic = StringUtils.join(allPicList.toArray(), ",");
//存入修改后的图片路径
if(uploadPicFileNameAll.equals("")){
return leavePic;
}else if(!uploadPicFileNameAll.equals("") && !leavePic.equals("")){
return uploadPicFileNameAll+","+leavePic;
}else if(!uploadPicFileNameAll.equals("") && leavePic.equals("")){
return uploadPicFileNameAll;
}
}else{
if(uploadPicFileNameAll == null || uploadPicFileNameAll.equals("")){
return oldPicFileName;
}else{
return oldPicFileName+","+uploadPicFileNameAll;
}
}
return null;
}