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