| | |
| | | } |
| | | |
| | | /** |
| | | * 根据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 |