1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| @Component @Slf4j public class OssUtil { private static OSS ossClient; @Value("${OSS.endpoint}") private String endpoint; @Value("${OSS.accessKeyId}") private String accessKeyId; @Value("${OSS.accessKeySecret}") private String accessKeySecret; @Value("${OSS.bucketName}") private String bucketName;
@PostConstruct public void init() { try { ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); ossClient.createBucket(bucketName); } catch (Exception e) { log.error("初始化oss配置异常: 【{}】", e.getMessage()); } }
public String uploadPreview(String bucketName, MultipartFile file) { String originalFilename = file.getOriginalFilename(); String newFileName = String.format("%s-%s.%s", FileUtil.mainName(originalFilename), IdUtil.simpleUUID(), FileUtil.extName(originalFilename)); try { upload(bucketName, file, newFileName); return preview(newFileName); } catch (Exception e) { return "上传失败"; } }
public static String getContentType(String FilenameExtension) { if (FilenameExtension.equalsIgnoreCase(".bmp")) { return "image/bmp"; } if (FilenameExtension.equalsIgnoreCase(".gif")) { return "image/gif"; } if (FilenameExtension.equalsIgnoreCase(".jpeg") || FilenameExtension.equalsIgnoreCase(".jpg") || FilenameExtension.equalsIgnoreCase(".png")) { return "image/jpg"; } if (FilenameExtension.equalsIgnoreCase(".html")) { return "text/html"; } if (FilenameExtension.equalsIgnoreCase(".txt")) { return "text/plain"; } if (FilenameExtension.equalsIgnoreCase(".vsd")) { return "application/vnd.visio"; } if (FilenameExtension.equalsIgnoreCase(".pptx") || FilenameExtension.equalsIgnoreCase(".ppt")) { return "application/vnd.ms-powerpoint"; } if (FilenameExtension.equalsIgnoreCase(".xls") || FilenameExtension.equalsIgnoreCase(".xlsx")) { return "application/vnd.ms-excel"; } if (FilenameExtension.equalsIgnoreCase(".docx") || FilenameExtension.equalsIgnoreCase(".doc")) { return "application/msword"; } if (FilenameExtension.equalsIgnoreCase(".xml")) { return "text/xml"; } return "image/jpg"; }
private Boolean upload(String bucketName, MultipartFile file, String fileName) throws IOException { try { ObjectMetadata objectMetadata = new ObjectMetadata(); objectMetadata.setContentLength(file.getSize()); objectMetadata.setCacheControl("no-cache"); objectMetadata.setHeader("Pragma", "no-cache"); objectMetadata.setContentType(getContentType(fileName.substring(fileName.lastIndexOf(".")))); objectMetadata.setContentDisposition("inline;filename=" + fileName); ossClient.putObject(bucketName, fileName, file.getInputStream(), objectMetadata); } catch (Exception e) { log.error("上传文件异常: 【{}】", e.getMessage()); return false; } return true; }
public String preview(String fileName) { URL url = ossClient.generatePresignedUrl(bucketName, fileName, DateUtil.parse("2099-01-01", "yyyy-MM-dd")); String finalUrl = StrUtil.subBefore(url.toString(), "?", false); log.info("文件路径预览:{}", finalUrl); return finalUrl; } }
|