|
|
@@ -6,6 +6,8 @@ import cc.iotkit.common.api.Paging;
|
|
|
import cc.iotkit.common.api.Request;
|
|
|
import cc.iotkit.common.log.annotation.Log;
|
|
|
import cc.iotkit.common.log.enums.BusinessType;
|
|
|
+import cc.iotkit.common.oss.core.OssClient;
|
|
|
+import cc.iotkit.common.oss.factory.OssFactory;
|
|
|
import cc.iotkit.common.validate.QueryGroup;
|
|
|
import cc.iotkit.common.web.core.BaseController;
|
|
|
import cc.iotkit.system.dto.bo.SysOssBo;
|
|
|
@@ -13,16 +15,23 @@ import cc.iotkit.system.dto.vo.SysOssUploadVo;
|
|
|
import cc.iotkit.system.dto.vo.SysOssVo;
|
|
|
import cc.iotkit.system.service.ISysOssService;
|
|
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
|
+import cn.hutool.core.io.IoUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.amazonaws.services.s3.model.ObjectMetadata;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
+import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.http.MediaType;
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
+import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
+import java.nio.file.Files;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
|
@@ -50,7 +59,6 @@ public class SysOssController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 查询OSS对象基于id串
|
|
|
- *
|
|
|
*/
|
|
|
@ApiOperation(value = "查询OSS对象基于id串", notes = "查询OSS对象基于id串")
|
|
|
@SaCheckPermission("system:oss:list")
|
|
|
@@ -68,7 +76,7 @@ public class SysOssController extends BaseController {
|
|
|
@SaCheckPermission("system:oss:upload")
|
|
|
@Log(title = "OSS对象存储", businessType = BusinessType.INSERT)
|
|
|
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
|
|
- public SysOssUploadVo upload(@RequestPart("file") MultipartFile file,@RequestParam("requestId") String requestId) {
|
|
|
+ public SysOssUploadVo upload(@RequestPart("file") MultipartFile file, @RequestParam("requestId") String requestId) {
|
|
|
if (ObjectUtil.isNull(file)) {
|
|
|
fail("上传文件不能为空");
|
|
|
}
|
|
|
@@ -82,19 +90,26 @@ public class SysOssController extends BaseController {
|
|
|
|
|
|
/**
|
|
|
* 下载OSS对象
|
|
|
- *
|
|
|
*/
|
|
|
@SaCheckPermission("system:oss:download")
|
|
|
@PostMapping("/downloadById")
|
|
|
@ApiOperation(value = "下载OSS对象", notes = "下载OSS对象")
|
|
|
- public void download(@RequestBody @Validated Request<Long> bo, HttpServletResponse response) throws IOException {
|
|
|
- ossService.download(bo.getData());
|
|
|
+ public ResponseEntity<StreamingResponseBody> download(@RequestBody @Validated Request<Long> bo) throws IOException {
|
|
|
+ SysOssVo ossVo = ossService.getById(bo.getData());
|
|
|
+ OssClient storage = OssFactory.instance();
|
|
|
+ ObjectMetadata objectMetadata = storage.getObjectMetadata(ossVo.getUrl());
|
|
|
+ InputStream objectContent = storage.getObjectContent(ossVo.getUrl());
|
|
|
+ return ResponseEntity
|
|
|
+ .ok()
|
|
|
+ .header(HttpHeaders.ACCEPT_RANGES, "bytes")
|
|
|
+ .header("download-filename", ossVo.getFileName())
|
|
|
+ .contentLength(objectMetadata.getContentLength())
|
|
|
+ .contentType(MediaType.APPLICATION_OCTET_STREAM)
|
|
|
+ .body(out -> IoUtil.copy(objectContent, out));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 删除OSS对象存储
|
|
|
- *
|
|
|
-
|
|
|
*/
|
|
|
@ApiOperation(value = "删除OSS对象存储", notes = "删除OSS对象存储")
|
|
|
@SaCheckPermission("system:oss:remove")
|