java判断是否上传的文件修改后缀

java判断是否上传的文件修改后缀java 判断是否上传的文件修改后缀调用 判断文件后缀名是否被修改 ResultString GetFileTypeU getOriginalF file if originalFile isSuccess returnorigin 代码 importcom hronline commons tools utils Resu java 文件后缀名被误改如何判断

java判断是否上传的文件修改后缀

调用:

 @ApiOperation("图片文件上传") public Result<String> uploadPic(@RequestParam("file")MultipartFile file ){ //判断文件后缀名是否被修改 Result<String> originalFile = GetFileTypeUtil.getOriginalFile(file); if(!originalFile.isSuccess()){ return originalFile; } ....... } 

代码:

 import com.hronline.commons.tools.utils.Result; import com.hronline.sys.enums.FileType; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; public class GetFileTypeUtil { public static Result<String> getOriginalFile(MultipartFile file){ try { String suf = ""; //首先判断是不是空的文件 if (!file.isEmpty()) { //对文文件的全名进行截取然后在后缀名进行删选。 int begin = file.getOriginalFilename().indexOf("."); int last = file.getOriginalFilename().length(); //获得文件后缀名 suf = file.getOriginalFilename().substring(begin + 1, last); }else { return new Result().error("上传文件失败"); } InputStream inputStream = new ByteArrayInputStream(file.getBytes()); FileType typeByStream = getTypeByStream(inputStream); if(typeByStream == null){ return new Result().ok("非常用文件"); } String trueSuf = typeByStream.toString(); boolean contains = trueSuf.toLowerCase().contains(suf.toLowerCase()); //docx有点特殊 if(!contains && !(suf.equals("docx") && trueSuf.toLowerCase().equals("zip"))){ return new Result().error("文件格式已更改"); } } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return new Result().ok("文件格式正确"); } / * byte数组转换成16进制字符串 * * @param src * @return */ private static String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } / * 根据文件流读取图片文件真实类型 * * @param is * @return */ private static FileType getTypeByStream(InputStream is) { byte[] b = new byte[4]; try { is.read(b, 0, b.length); } catch (IOException e) { e.printStackTrace(); } String type = bytesToHexString(b).toUpperCase(); FileType[] fileTypes = FileType.values(); for (FileType types : fileTypes) { //startsWith() 方法用于检测字符串是否以指定的前缀开始 if (type.startsWith(types.getValue())) { return types; } } return null; } } 
今天的文章 java判断是否上传的文件修改后缀分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-31 13:11
下一篇 2024-12-31 13:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/97816.html