diff --git a/src/main/java/com/peanut/modules/oss/controller/OssController.java b/src/main/java/com/peanut/modules/oss/controller/OssController.java index f1680135..46e52a40 100644 --- a/src/main/java/com/peanut/modules/oss/controller/OssController.java +++ b/src/main/java/com/peanut/modules/oss/controller/OssController.java @@ -7,10 +7,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @Slf4j @RestController @@ -32,4 +29,13 @@ public class OssController { String url = ossService.uploadFileAvatar(file); return R.ok().put("url",url); } + + //获取进度条 + @GetMapping("/getSchedule") + public R getSchedule(String fileName){ + String percent = ossService.getSchedule(fileName); + return R.ok().put("percent",percent); + } + + } diff --git a/src/main/java/com/peanut/modules/oss/service/OssService.java b/src/main/java/com/peanut/modules/oss/service/OssService.java index 7fa5da58..4ae7c437 100644 --- a/src/main/java/com/peanut/modules/oss/service/OssService.java +++ b/src/main/java/com/peanut/modules/oss/service/OssService.java @@ -7,4 +7,6 @@ public interface OssService { String uploadFileAvatar(MultipartFile file); String uploadHtml(String html,String name); + + String getSchedule(String fileName); } diff --git a/src/main/java/com/peanut/modules/oss/service/impl/OssServiceImpl.java b/src/main/java/com/peanut/modules/oss/service/impl/OssServiceImpl.java index 2d6967c7..24ea10e0 100644 --- a/src/main/java/com/peanut/modules/oss/service/impl/OssServiceImpl.java +++ b/src/main/java/com/peanut/modules/oss/service/impl/OssServiceImpl.java @@ -2,10 +2,14 @@ package com.peanut.modules.oss.service.impl; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.model.PutObjectRequest; import com.peanut.common.utils.ConstantPropertiesUtils; +import com.peanut.modules.oss.controller.PutObjectProgressListener; import com.peanut.modules.oss.service.OssService; import lombok.extern.slf4j.Slf4j; import org.joda.time.DateTime; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -17,6 +21,9 @@ import java.util.UUID; @Service public class OssServiceImpl implements OssService { + @Autowired + private StringRedisTemplate redisTemplate; + //上传头像到oss @Override public String uploadFileAvatar(MultipartFile file) { @@ -35,6 +42,7 @@ public class OssServiceImpl implements OssService { InputStream inputStream = file.getInputStream(); //获取文件名称 String fileName = file.getOriginalFilename(); + String fileNameProgress = file.getOriginalFilename(); //1 在文件名称里面添加随机唯一的值 String uuid = UUID.randomUUID().toString().replaceAll("-",""); // yuy76t5rew01.jpg @@ -52,7 +60,9 @@ public class OssServiceImpl implements OssService { //第一个参数 Bucket名称 //第二个参数 上传到oss文件路径和文件名称 aa/bb/1.jpg //第三个参数 上传文件输入流 - ossClient.putObject(bucketName,fileName , inputStream); + long fileSize = file.getSize(); + ossClient.putObject(new PutObjectRequest(bucketName,fileName, inputStream). + withProgressListener(new PutObjectProgressListener(fileSize,fileNameProgress))); // 关闭OSSClient。 ossClient.shutdown(); @@ -120,4 +130,13 @@ public class OssServiceImpl implements OssService { return null; } } + + @Override + public String getSchedule(String fileName) { + String percent = redisTemplate.opsForValue().get(fileName); + if ("100".equals(percent)){ + redisTemplate.delete(fileName); + } + return percent==null?"":percent; + } }