Просмотр исходного кода

修复上传文件打水印的图片类型判断

tsurumure 4 недель назад
Родитель
Сommit
2d6e13c5ec

+ 5 - 10
src/main/java/com/backendsys/modules/material/service/impl/MaterialServiceImpl.java

@@ -107,8 +107,6 @@ public class MaterialServiceImpl implements MaterialService {
         MaterialCategory materialCategory = materialCategoryDao.selectById(material.getCategory_id());
         if (materialCategory == null) throw new CustException("素材分类不存在");
 
-        ObjectKeyEntity objectKeyEntity = objectKeyUtil.urlToObjectKey(material.getImage_url());
-
         // [Filter] tag_id 过滤掉空值和 0
         String cleaned = Optional.ofNullable(material.getTag_ids())
             .orElse("")
@@ -117,16 +115,13 @@ public class MaterialServiceImpl implements MaterialService {
             .replaceAll("^,|,$", "");
         material.setTag_ids(cleaned);
 
-//        // 错误做法:原图地址不能加参数,否则缩略图会重复加参数
-//        if (StrUtil.isNotEmpty(material.getImage_url())) {
-//            String image_url = UploadUtil.getImageThumbUrl(material.getImage_url(), objectKeyEntity.getTarget(), 315, null, null, true);
-//            material.setImage_url(image_url);
-//        }
-
         // 生成缩略图,并填充缩略图地址
         if (StrUtil.isNotEmpty(material.getImage_url())) {
-            String image_thumb_url = UploadUtil.getImageThumbUrl(material.getImage_url(), objectKeyEntity.getTarget(), 276, 155);
-            material.setImage_thumb_url(image_thumb_url);
+            ObjectKeyEntity objectKeyEntity = objectKeyUtil.urlToObjectKey(material.getImage_url());
+            if (objectKeyEntity != null) {
+                String image_thumb_url = UploadUtil.getImageThumbUrl(material.getImage_url(), objectKeyEntity.getTarget(), 276, 155);
+                material.setImage_thumb_url(image_thumb_url);
+            }
         }
 
         materialDao.insertMaterial(material);

+ 9 - 4
src/main/java/com/backendsys/modules/sdk/tencentcloud/cos/service/impl/TencentCosServiceImpl.java

@@ -157,7 +157,7 @@ public class TencentCosServiceImpl implements TencentCosService {
 //             */
 //            // 判断图片类型
 //            List<String> imageType = Arrays.asList("jpg", "jpeg", "png", "bmp", "webp", "tiff", "gif");
-//            boolean isImage = imageType.contains(FilenameUtil.getFilenameSuffix(multipartFile, false).toLowerCase());
+//            boolean isImage = imageType.contains(CommonUtil.getFilenameSuffix(multipartFile, false).toLowerCase());
 //            if (isImage) {
 //                // 选用样式1,并限定缩略图的宽高最小值为100×100 绝对质量为60
 //                String rule = "imageView2/1/w/100/h/100/q/60";
@@ -186,9 +186,14 @@ public class TencentCosServiceImpl implements TencentCosService {
 
             System.out.println("[腾讯云][cos-uploadResult] = " + uploadResult.getDateStr());
 
-            // 打水印
-            if (is_watermark != null && is_watermark == 1) {
-                addWatermask(object_key);
+            // 判断是图片类型
+            List<String> imageType = Arrays.asList("jpg", "jpeg", "png", "bmp", "webp", "tiff", "gif");
+            boolean isImage = imageType.contains(CommonUtil.getFilenameSuffix(multipartFile, false).toLowerCase());
+            if (isImage) {
+                // 打水印
+                if (is_watermark != null && is_watermark == 1) {
+                    addWatermask(object_key);
+                }
             }
 
             // 自定义返回结果实体