pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-common/src/main/java/com/ycl/controller/FileController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-common/src/main/java/com/ycl/utils/AliyunUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/dto/video/AlarmDataParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/resources/application-dev.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/resources/application-prod.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-smoke/src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
pom.xml
@@ -196,6 +196,18 @@ <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.16.1</version> </dependency> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.12.2</version> </dependency> </dependencies> </project> ycl-common/src/main/java/com/ycl/controller/FileController.java
@@ -3,6 +3,7 @@ import com.ycl.api.CommonResult; import com.ycl.dto.media.Media; import com.ycl.dto.media.PictureZoomParameter; import com.ycl.utils.AliyunUtils; import com.ycl.utils.MediaFileUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -10,12 +11,17 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; @RestController @Api(tags = "文件上传") @RequestMapping("/file") public class FileController { private MediaFileUtil mediaFileUtil; @Autowired private AliyunUtils aliyunUtils; @Autowired public void setMediaFileUtil(MediaFileUtil mediaFileUtil) { @@ -29,17 +35,32 @@ * @return */ // @ApiOperation("上传图片") // @RequestMapping(value = "/medias", method = RequestMethod.POST) // public CommonResult<Media> mediaUpload(@RequestParam("file") MultipartFile file) { // try { // PictureZoomParameter zoomPar = PictureZoomParameter.getBoardPar(); // Media res = mediaFileUtil.save(file, zoomPar); // // return CommonResult.success(res, "ok"); // } catch (Exception e) { // return CommonResult.failed("图片格式只能为jpg、jpeg、png,只修改文件的后缀无效!"); // } // } @ApiOperation("上传图片") @RequestMapping(value = "/medias", method = RequestMethod.POST) public CommonResult<Media> mediaUpload(@RequestParam("file") MultipartFile file) { public CommonResult<String> mediaUpload(@RequestParam("file") MultipartFile file) { try { PictureZoomParameter zoomPar = PictureZoomParameter.getBoardPar(); Media res = mediaFileUtil.save(file, zoomPar); InputStream inputStream = file.getInputStream(); String orginalFileName = file.getOriginalFilename(); String res = aliyunUtils.upload(inputStream, orginalFileName); return CommonResult.success(res, "ok"); } catch (Exception e) { return CommonResult.failed("图片格式只能为jpg、jpeg、png,只修改文件的后缀无效!"); e.printStackTrace(); } return CommonResult.failed("图片格式只能为jpg、jpeg、png,只修改文件的后缀无效!"); } @ApiOperation("删除图片") ycl-common/src/main/java/com/ycl/utils/AliyunUtils.java
New file @@ -0,0 +1,81 @@ package com.ycl.utils; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.InputStream; import java.util.UUID; @Component public class AliyunUtils { private static String endpoint; private static String keyId; private static String keySecret; private static String bucketName; @Value("${aliyun.oss.endpoint}") public void setEndpoint(String endpoint) { AliyunUtils.endpoint = endpoint; } @Value("${aliyun.oss.keyId}") public void setKeyId(String keyId) { AliyunUtils.keyId = keyId; } @Value("${aliyun.oss.keySecret}") public void setKeySecret(String keySecret) { AliyunUtils.keySecret = keySecret; } @Value("${aliyun.oss.bucketName}") public void setBucketName(String bucketName) { AliyunUtils.bucketName = bucketName; } public static String upload(InputStream inputStream, String orginalFileName){ // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, keySecret); // 文件名 String fileName = UUID.randomUUID().toString(); //文件扩展名 String fileExtention = orginalFileName.substring(orginalFileName.lastIndexOf(".")); //最终的路径 类似avatar/2021/12/05/xxxxxxxxx.jpg String objectName = fileName+fileExtention; ossClient.putObject(bucketName, objectName, inputStream); // 关闭OSSClient。 ossClient.shutdown(); return "https://"+bucketName+"."+endpoint+"/"+objectName; } public static void delete(String link){ if (link == null || link.equals("")) { return; } OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, keySecret); try { ossClient.deleteObject(bucketName, link); } catch (OSSException oe) { System.out.println("Caught an OSSException, which means your request made it to OSS, " + "but was rejected with an error response for some reason."); System.out.println("Error Message:" + oe.getErrorMessage()); System.out.println("Error Code:" + oe.getErrorCode()); System.out.println("Request ID:" + oe.getRequestId()); System.out.println("Host ID:" + oe.getHostId()); } catch (ClientException ce) { System.out.println("Caught an ClientException, which means the client encountered " + "a serious internal problem while trying to communicate with OSS, " + "such as not being able to access the network."); System.out.println("Error Message:" + ce.getMessage()); } finally { if (ossClient != null) { ossClient.shutdown(); } } } } ycl-platform/src/main/java/com/ycl/dto/video/AlarmDataParam.java
@@ -1,8 +1,6 @@ package com.ycl.dto.video; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** ycl-platform/src/main/resources/application-dev.yml
@@ -72,3 +72,10 @@ userName: suichang passWord: a12345677 ip: 10.10.10.10 aliyun: oss: endpoint: https://oss-cn-chengdu.aliyuncs.com keyId: LTAI5tJTmV5pnPKjwvpdjyfi keySecret: HRXGIrDdnhdlvV5AoOB4k9NxYP0G9Z bucketName: baizonghao-upload ycl-platform/src/main/resources/application-prod.yml
@@ -25,7 +25,7 @@ redis: database: 0 host: 127.0.0.1 port: 6379 port: 6380 password: ycl2018 jedis: pool: ycl-smoke/src/main/resources/application.yml
@@ -1,6 +1,6 @@ spring: profiles: active: pro active: dev main: allow-circular-references: true allow-bean-definition-overriding: true