add(req-2119):下载接口优化
This commit is contained in:
parent
ca8cbcd379
commit
692a0c1e4b
@ -14,12 +14,16 @@ import cn.axzo.oss.manager.api.dto.response.ServerFileDownloadResponse;
|
||||
import cn.axzo.oss.service.api.FileService;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import feign.Response;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.Valid;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -94,19 +98,4 @@ public class ServerFileController implements ServerFileServiceApi {
|
||||
FindFileKeyDto dto = BeanConvertUtil.copyBean(request, FindFileKeyDto.class);
|
||||
return CommonResponse.success(BeanConverter.convert(fileService.findFileKey(dto), FindFileKeyResponse.class));
|
||||
}
|
||||
|
||||
/**
|
||||
* 从华为云上下载文件
|
||||
*
|
||||
* @param request DownloadFileFromObsRequest
|
||||
* @return DownloadFileFromObsResponse
|
||||
*/
|
||||
@Override
|
||||
public CommonResponse<DownloadFileFromObsResponse> downloadFileFromOBS(@Valid @RequestBody DownloadFileFromObsRequest request) {
|
||||
ServerFileDownloadDto serverFileDownloadDto = BeanConvertUtil.copyBean(request, ServerFileDownloadDto.class);
|
||||
ServerFileDownloadResponse res = fileService.getObject(serverFileDownloadDto, request.getFileDownloadType());
|
||||
DownloadFileFromObsResponse result = BeanConverter.convert(res, DownloadFileFromObsResponse.class);
|
||||
result.setFileStream(res.getFileStream());
|
||||
return CommonResponse.success(result);
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ import cn.axzo.oss.common.enums.FileUploadTypeEnum;
|
||||
import cn.axzo.oss.common.enums.StorageUnitEnum;
|
||||
import cn.axzo.oss.common.exception.BizException;
|
||||
import cn.axzo.oss.common.utils.BeanConvertUtil;
|
||||
import cn.axzo.oss.http.model.DownloadFileFromObsRequest;
|
||||
import cn.axzo.oss.http.model.WebFileUploadVo;
|
||||
import cn.axzo.oss.manager.api.dto.request.*;
|
||||
import cn.axzo.oss.manager.api.dto.response.*;
|
||||
@ -310,20 +311,18 @@ public class WebFileController {
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@GetMapping("/v1/obs/testDownload")
|
||||
@GetMapping("/v1/obs/downloadFileFromObs")
|
||||
@CrossOrigin
|
||||
public void testDownload(@Valid ServerFileDownloadDto dto, HttpServletResponse response) {
|
||||
public void downloadFileFromObs(@Valid DownloadFileFromObsRequest req, HttpServletResponse response) {
|
||||
ServerFileDownloadDto dto = new ServerFileDownloadDto();
|
||||
dto.setFileKey(req.getFileKey());
|
||||
ServerFileDownloadResponse result = fileService.getObject(dto, FileDownloadTypeEnum.STREAM_DOWNLOAD.getCode());
|
||||
try (InputStream inputStream = result.getFileStream()) {
|
||||
FileOutputStream fileOutputStream = new FileOutputStream("/Users/axzo/Desktop/" + result.getFileName());
|
||||
byte[] buffer = new byte[1024];
|
||||
int byteRead;
|
||||
while ((byteRead = inputStream.read(buffer, 0, 1024)) != -1) {
|
||||
fileOutputStream.write(buffer, 0, byteRead);
|
||||
}
|
||||
|
||||
fileOutputStream.close();
|
||||
|
||||
try (OutputStream outputStream = response.getOutputStream(); InputStream inputStream = result.getFileStream()) {
|
||||
response.setContentType("image/jpg");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.addHeader("Content-Disposition", "attachment;filename="
|
||||
+ result.getFileName() + "." + result.getFileFormat());
|
||||
IOUtils.copy(inputStream, outputStream);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
@ -35,6 +35,11 @@
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-openfeign-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.axzo.oss</groupId>
|
||||
<artifactId>oss-service</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
||||
@ -3,9 +3,13 @@ package cn.axzo.oss.http.api;
|
||||
import cn.axzo.oss.http.model.*;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import feign.Response;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -57,13 +61,4 @@ public interface ServerFileServiceApi {
|
||||
*/
|
||||
@RequestMapping(value = "api/v1/server/getFileKey", method = RequestMethod.POST)
|
||||
CommonResponse<List<FindFileKeyResponse>> getFileKey(FindFileKeyRequest request);
|
||||
|
||||
/**
|
||||
* 从华为云上下载文件
|
||||
*
|
||||
* @param request DownloadFileFromObsRequest
|
||||
* @return DownloadFileFromObsResponse
|
||||
*/
|
||||
@RequestMapping(value = "api/v1/server/downloadFileFromOBS", method = RequestMethod.POST)
|
||||
CommonResponse<DownloadFileFromObsResponse> downloadFileFromOBS(DownloadFileFromObsRequest request);
|
||||
}
|
||||
|
||||
@ -1,11 +1,13 @@
|
||||
package cn.axzo.oss.http.api;
|
||||
|
||||
import cn.axzo.oss.http.model.DownloadFileFromObsRequest;
|
||||
import cn.axzo.oss.http.model.DownloadFileFromObsResponse;
|
||||
import cn.axzo.oss.http.model.WebFileUploadVo;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import feign.Response;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RequestPart;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@ -35,4 +37,7 @@ public interface WebFileServiceApi {
|
||||
CommonResponse<WebFileUploadVo> uploadObs(@Valid @RequestParam("appCode") String appCode,
|
||||
@Valid @RequestParam("bizScene") String bizScene,
|
||||
@Valid @RequestPart MultipartFile file);
|
||||
|
||||
@PostMapping(value = "/webApi/v1/obs/downloadFileFromObs", consumes = MediaType.APPLICATION_PROBLEM_JSON_VALUE)
|
||||
CommonResponse<Response> downloadFileFromObs(@Valid @RequestBody DownloadFileFromObsRequest req);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user