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