吉安感知网项目-后端
linwei
2026-04-24 a615f757084e4d11a90ed42698b8a8cbcc083cb8
drone-common/src/main/java/org/sxkj/common/utils/HeaderUtils.java
@@ -223,6 +223,121 @@
   }
   /**
    * 根据URL获取附件类型
    * 通过文件扩展名判断附件类型:
    * - 图片类型:jpg, jpeg, png, gif, bmp, webp, svg 等 -> 返回 1
    * - 视频类型:mp4, avi, mov, wmv, flv, mkv, mpeg, mpg 等 -> 返回 2
    * - 文档类型:pdf, doc, docx, xls, xlsx, ppt, pptx, txt 等 -> 返回 3
    * - 其他类型 -> 返回 0
    *
    * @param url 文件URL地址
    * @return 附件类型:1-图片,2-视频,3-文档,0-其他
    */
   public static Integer getAttachmentType(String url) {
      if (StringUtils.isEmpty(url)) {
         return 0;
      }
      // 提取文件扩展名
      String extension = getFileExtension(url);
      if (StringUtils.isEmpty(extension)) {
         return 0;
      }
      // 转换为小写进行比较
      String extLower = extension.toLowerCase();
      // 图片类型
      if (isImageType(extLower)) {
         return 1;
      }
      // 视频类型
      if (isVideoType(extLower)) {
         return 2;
      }
      // 文档类型
      if (isDocumentType(extLower)) {
         return 3;
      }
      // 其他类型
      return 0;
   }
   /**
    * 从URL中提取文件扩展名
    *
    * @param url 文件URL地址
    * @return 文件扩展名(不包含点),如果无法提取则返回null
    */
   private static String getFileExtension(String url) {
      if (StringUtils.isEmpty(url)) {
         return null;
      }
      // 去除URL参数部分(?后面的内容)
      int questionMarkIndex = url.indexOf('?');
      if (questionMarkIndex != -1) {
         url = url.substring(0, questionMarkIndex);
      }
      // 查找最后一个点的位置
      int lastDotIndex = url.lastIndexOf('.');
      if (lastDotIndex == -1 || lastDotIndex == url.length() - 1) {
         return null;
      }
      // 提取扩展名
      return url.substring(lastDotIndex + 1);
   }
   /**
    * 判断是否为图片类型
    *
    * @param extension 文件扩展名(小写)
    * @return 是否为图片类型
    */
   private static boolean isImageType(String extension) {
      return extension.equals("jpg") || extension.equals("jpeg") ||
         extension.equals("png") || extension.equals("gif") ||
         extension.equals("bmp") || extension.equals("webp") ||
         extension.equals("svg") || extension.equals("tiff") ||
         extension.equals("tif") || extension.equals("ico");
   }
   /**
    * 判断是否为视频类型
    *
    * @param extension 文件扩展名(小写)
    * @return 是否为视频类型
    */
   private static boolean isVideoType(String extension) {
      return extension.equals("mp4") || extension.equals("avi") ||
         extension.equals("mov") || extension.equals("wmv") ||
         extension.equals("flv") || extension.equals("mkv") ||
         extension.equals("mpeg") || extension.equals("mpg") ||
         extension.equals("webm") || extension.equals("m4v") ||
         extension.equals("3gp");
   }
   /**
    * 判断是否为文档类型
    *
    * @param extension 文件扩展名(小写)
    * @return 是否为文档类型
    */
   private static boolean isDocumentType(String extension) {
      return extension.equals("pdf") || extension.equals("doc") ||
         extension.equals("docx") || extension.equals("xls") ||
         extension.equals("xlsx") || extension.equals("ppt") ||
         extension.equals("pptx") || extension.equals("txt") ||
         extension.equals("csv") || extension.equals("zip") ||
         extension.equals("rar");
   }
   /**
    * 获取当前HttpServletRequest对象
    *
    * @return HttpServletRequest对象,可能为null