From 14b303934f8bbbfe4b14d7787d0a7d7fd2ff26f9 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 16 八月 2024 14:28:52 +0800 Subject: [PATCH] 管理后台文件上传接口编写 --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OssController.java | 80 ++++++++++++++++++++++++++ ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ObsUploadUtil.java | 78 ++++++++++++++++++++++++++ 2 files changed, 158 insertions(+), 0 deletions(-) diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ObsUploadUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ObsUploadUtil.java new file mode 100644 index 0000000..f5239c8 --- /dev/null +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ObsUploadUtil.java @@ -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"); +// } +} diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OssController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OssController.java new file mode 100644 index 0000000..d980520 --- /dev/null +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/OssController.java @@ -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); +// } + + +} -- Gitblit v1.7.1