ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ObsUploadUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OssController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ObsUploadUtil.java
New file @@ -0,0 +1,78 @@ package com.ruoyi.common.core.utils; import com.obs.services.ObsClient; import com.obs.services.model.ObjectMetadata; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.io.InputStream; import java.util.UUID; public class ObsUploadUtil { public static String endPoint = "obs.cn-southwest-2.myhuaweicloud.com"; public static String accessKeyId = "LP9N1TLAYN8ERS1PVIYK"; public static String accessKeySecret = "bV55lFHi1cG0SYBvnab8yIgDX6etKRSLh5j1gkPR"; public static String bucketName = "haitunyingyu"; public static String oss_domain = "https://haitunyingyu.obs.cn-southwest-2.myhuaweicloud.com/"; // 创建ObsClient实例 public static ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endPoint); public static String obsUpload(MultipartFile file) throws IOException{ //CommonsMultipartFile file = (CommonsMultipartFile)multipartFile; String fileName = ""; if(file!=null && !"".equals(file.getOriginalFilename()) && file.getOriginalFilename()!=null){ InputStream content = file.getInputStream();//获得指定文件的输入流 ObjectMetadata meta = new ObjectMetadata();// 创建上传Object的Metadata meta.setContentLength(file.getSize()); // 必须设置ContentLength String originalFilename = file.getOriginalFilename(); if (originalFilename.contains("apk")){ fileName = "bf2fe5c5499341e5bc0d56c0c7d5fb2e.apk"; System.err.println("apk"); }else{ fileName = UUID.randomUUID().toString().replaceAll("-","") + originalFilename.subSequence(originalFilename.lastIndexOf("."), originalFilename.length()); } obsClient.putObject(bucketName,"admin/"+fileName,content,meta);// 上传Object. if(fileName != null && !"".equals(fileName)){ System.out.println(fileName); fileName = oss_domain+"admin/"+fileName; } } return fileName; } /** * 删除某个Object * * @param bucketUrl * @return */ public static boolean deleteObject(String bucketUrl) { try { bucketUrl=bucketUrl.replace(oss_domain+"web",""); // 删除Object. obsClient.deleteObject(bucketName, bucketUrl); } catch (Exception e) { e.printStackTrace(); return false; } finally { //ossClient.shutdown(); } return true; } // public static void createBucket(String bucketName) // { // //初始化 OSSClient //// ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret); // // // 新建一个Bucket // Bucket bucket = ossClient.createBucket(bucketName); // System.out.println(bucket.getName()); // System.out.println(bucket.getCreationDate()); // } // // public static void main(String[] args) { // OssUploadUtil.createBucket("ssfdfsd"); // } } ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OssController.java
New file @@ -0,0 +1,80 @@ package com.ruoyi.other.controller; import com.ruoyi.common.core.utils.ObsUploadUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; @RestController @RequestMapping("/base/oss") @Api(value = "文件上传", tags = "文件上传", description = "文件上传") public class OssController { private static final String endpoint = "obs.cn-north-4.myhuaweicloud.com"; private static final String accessKeyId = "DRJFJRVQ9KVLQUSJUROI"; private static final String accessKeySecret = "3zpPkULh0a8CTTYjKL4f7szQZECkvVol4SwNab0f"; private static final String bucketName = "jkjianshen"; @PostMapping("/upload") @ApiOperation(value = "文件上传") public String upload(@RequestParam("file") MultipartFile file) throws IOException { String s = ObsUploadUtil.obsUpload(file); return s; } // @PostMapping("/uploadVideo") // @ApiOperation(value = "视频上传",tags = "文件上传") // public String uploadVideo(@RequestParam("file") MultipartFile file) throws Exception { // // 获取文件名 // String fileName = file.getOriginalFilename(); // // 构建目标文件路径 // String filePath = "/usr/local/temp" + fileName; //// String filePath = "C:/temp/" + fileName; // // 创建目标文件对象 // File targetFile = new File(filePath); // // 将 MultipartFile 内容写入目标文件 // try (FileOutputStream fos = new FileOutputStream(targetFile)) { // fos.write(file.getBytes()); // } // String s = UploadVideoUtil.endUpload(targetFile.toString(), UUIDUtil.getRandomCode(5)+fileName); // // 创建要删除的文件对象 // File fileToDelete = new File(targetFile.toString()); // // 检查文件是否存在,并删除文件 // if (fileToDelete.exists()) { // fileToDelete.delete(); // } // return s; // } // @PostMapping("/upload") // @ApiOperation(value = "文件上传",tags = "文件上传") // public ResponseEntity<String> upload(@RequestParam("file") MultipartFile file) throws IOException { // // 创建 OSSClient 实例 // OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); // // // // 创建 PutObjectRequest 对象 // PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, file.getOriginalFilename(), file.getInputStream()); // // ObjectMetadata metadata = new ObjectMetadata(); // // 取消文件缓存,文件每次都会从OSS服务器获取 // metadata.setHeader("Cache-Control", "no-cache"); // metadata.setHeader("Expires", "0"); // // // // 上传文件 // PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest); // // // 关闭 OSSClient 实例 // ossClient.shutdown(); // // String fileUrl = "https://" + bucketName + "." + endpoint + "/" + file.getOriginalFilename(); // return ResponseEntity.ok(fileUrl); // } }