Explorar el Código

阿里云OOS单文件上传

chenzhengming hace 2 años
padre
commit
4434eeef5d

+ 9 - 1
pom.xml

@@ -31,12 +31,20 @@
         <poi.version>4.1.2</poi.version>
         <velocity.version>2.3</velocity.version>
         <jwt.version>0.9.1</jwt.version>
+        <aliyun-sdk.version>3.15.1</aliyun-sdk.version>
+
     </properties>
 	
     <!-- 依赖声明 -->
     <dependencyManagement>
-        <dependencies>
 
+        <dependencies>
+            <!--OSS Java SDK-->
+            <dependency>
+                <groupId>com.aliyun.oss</groupId>
+                <artifactId>aliyun-sdk-oss</artifactId>
+                <version>${aliyun-sdk.version}</version>
+            </dependency>
             <!-- SpringBoot的依赖配置-->
             <dependency>
                 <groupId>org.springframework.boot</groupId>

+ 8 - 1
ruoyi-admin/pom.xml

@@ -16,7 +16,12 @@
     </description>
 
     <dependencies>
-
+        <!--OSS Java SDK-->
+        <dependency>
+            <groupId>com.aliyun.oss</groupId>
+            <artifactId>aliyun-sdk-oss</artifactId>
+            <version>3.15.1</version>
+        </dependency>
         <!-- spring-boot-devtools -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -61,6 +66,8 @@
             <artifactId>ruoyi-generator</artifactId>
         </dependency>
 
+
+
     </dependencies>
 
     <build>

+ 49 - 28
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java

@@ -1,10 +1,16 @@
 package com.ruoyi.web.controller.common;
 
-import java.util.ArrayList;
-import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.model.PutObjectRequest;
+import com.aliyun.oss.model.PutObjectResult;
+import com.ruoyi.common.config.RuoYiConfig;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.file.FileUploadUtils;
+import com.ruoyi.common.utils.file.FileUtils;
+import com.ruoyi.framework.config.ServerConfig;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
@@ -14,13 +20,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.file.FileUploadUtils;
-import com.ruoyi.common.utils.file.FileUtils;
-import com.ruoyi.framework.config.ServerConfig;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * 通用请求处理
@@ -79,27 +84,43 @@ public class CommonController
 
     @ApiOperation(value = "上传文件", notes = "上传文件接口")
     @RequestMapping(value = "/send", method = RequestMethod.POST, headers = "content-type=multipart/form-data")
-    public AjaxResult uploadFile(@RequestPart("fire")MultipartFile file) throws Exception
-    {
-        try {
-            // 上传文件路径
-            String filePath = RuoYiConfig.getUploadPath();
-            if (filePath == null){
-                throw new RuntimeException("找不到文件路径");
-            }
+    public AjaxResult uploadFile(@RequestPart("fire")MultipartFile file) throws Exception {
             //上传并返回文件名
-            String filename = FileUploadUtils.upload(filePath, file);
-            if (filename == null){
+            String ObjectName = FileUploadUtils.upload(file);
+            ObjectName.substring(1);
+        System.out.println(ObjectName);
+            if (ObjectName == null) {
                 throw new RuntimeException("获取不到文件名称");
             }
-            String url = serverConfig.getUrl()+filename;
-            AjaxResult ajax = AjaxResult.success();
-            ajax.put("fileName",filename);
-            ajax.put("url",url);
-            return ajax;
-        }catch (Exception e){
+            try {
+            // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
+            String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
+            // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
+            String accessKeyId = "LTAI5tKoTMqqQxRxoUGvPgNc";
+            String accessKeySecret = "tUmxFgyggTeunzkJWCEZ6WpuOjvfnx";
+            // 填写Bucket名称,例如examplebucket。
+            String bucketName = "c-zm";
+            // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
+            //String objectName = "exampledir/exampleobject.txt";
+            // 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。
+            // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
+            InputStream inputStream = file.getInputStream();
+            // 创建OSSClient实例。
+            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
+
+            // 创建PutObjectRequest对象。
+            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, ObjectName, inputStream);
+            // 设置该属性可以返回response。如果不设置,则返回的response为空。
+            putObjectRequest.setProcess("true");
+            // 创建PutObject请求。
+            PutObjectResult result = ossClient.putObject(putObjectRequest);
+            // 如果上传成功,则返回200。
+            System.out.println(result.getResponse().getStatusCode());
+        } catch (Exception e) {
             return AjaxResult.error(e.getMessage());
         }
+
+        return AjaxResult.success("https://c-zm.oss-cn-hangzhou.aliyuncs.com/" + ObjectName);
     }
 
     /**

+ 1 - 1
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java

@@ -112,7 +112,7 @@ public class Constants
     /**
      * 资源映射路径 前缀
      */
-    public static final String RESOURCE_PREFIX = "/profile";
+    public static final String RESOURCE_PREFIX = "profile";
 
     /**
      * RMI 远程方法调用

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/PostCollectionsServiceImpl.java

@@ -85,7 +85,7 @@ public class PostCollectionsServiceImpl implements IPostCollectionsService
 
             return AjaxResult.success(postCollectionsMapper.insertPostCollections(postCollectionsVo));
         }
-        //如果套系已上架,判断以下时间线
+
         else {
             //上架藏品不能新增
             return AjaxResult.error("此套系已上架,不能新增藏品");