文件下载接口实现
This commit is contained in:
parent
286f23ad21
commit
1f18245c8f
|
|
@ -3,13 +3,18 @@ package com.electromagnetic.industry.software.data.manage.controller;
|
|||
import com.electromagnetic.industry.software.data.manage.facade.EDDataFacade;
|
||||
import com.electromagnetic.industry.software.data.manage.request.indicator.EDDataRequest;
|
||||
import com.electromagnetic.industry.software.data.manage.request.indicator.FileChunkDTO;
|
||||
import com.electromagnetic.industry.software.data.manage.request.indicator.FileDownloadDTO;
|
||||
import electromagnetic.data.framework.share.model.ElectromagneticResult;
|
||||
import electromagnetic.data.framework.share.model.ElectromagneticResultUtil;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.core.io.InputStreamResource;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -62,9 +67,9 @@ public class EDDataController {
|
|||
|
||||
|
||||
@ApiOperation(value = "下载",notes = "")
|
||||
@RequestMapping(value = "/download",method = RequestMethod.POST)
|
||||
public ElectromagneticResult<?> download(@RequestBody EDDataRequest request){
|
||||
return edDataFacade.download(request);
|
||||
@RequestMapping(value = "/download",method = RequestMethod.GET)
|
||||
public ResponseEntity<InputStreamResource> download(@RequestBody FileDownloadDTO fileDownloadDTO, HttpServletResponse response) throws IOException {
|
||||
return edDataFacade.download(fileDownloadDTO, response);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,9 +3,14 @@ package com.electromagnetic.industry.software.data.manage.facade;
|
|||
import com.electromagnetic.industry.software.data.manage.request.indicator.EDDataRequest;
|
||||
import com.electromagnetic.industry.software.data.manage.request.indicator.FileChunkDTO;
|
||||
import com.electromagnetic.industry.software.data.manage.request.indicator.FileChunkResultDTO;
|
||||
import com.electromagnetic.industry.software.data.manage.request.indicator.FileDownloadDTO;
|
||||
import com.electromagnetic.industry.software.data.manage.response.indicator.EDDataPageResponse;
|
||||
import electromagnetic.data.framework.share.model.ElectromagneticResult;
|
||||
import org.springframework.core.io.InputStreamResource;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -49,10 +54,11 @@ public interface EDDataFacade {
|
|||
|
||||
/**
|
||||
* 下载
|
||||
* @param request
|
||||
*
|
||||
* @param fileDownloadDTO
|
||||
* @return
|
||||
*/
|
||||
ElectromagneticResult<Map<String, List<String>>> download(EDDataRequest request);
|
||||
ResponseEntity<InputStreamResource> download(FileDownloadDTO fileDownloadDTO, HttpServletResponse response) throws IOException;
|
||||
|
||||
/**
|
||||
* 导出
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
package com.electromagnetic.industry.software.data.manage.request.indicator;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class FileDownloadDTO {
|
||||
private String dataIdArr;
|
||||
}
|
||||
|
|
@ -2,34 +2,35 @@ package com.electromagnetic.industry.software.data.manage.service.facade;
|
|||
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ZipUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.category.model.Category;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.indicator.model.EDDataInfo;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.indicator.model.EDDataPage;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.indicator.parames.EDDataParams;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.indicator.service.EDDataService;
|
||||
import com.electromagnetic.industry.software.data.manage.domain.boardservice.user.service.CategoryService;
|
||||
import com.electromagnetic.industry.software.data.manage.facade.EDDataFacade;
|
||||
import com.electromagnetic.industry.software.data.manage.request.indicator.EDDataRequest;
|
||||
import com.electromagnetic.industry.software.data.manage.request.indicator.FileChunkDTO;
|
||||
import com.electromagnetic.industry.software.data.manage.request.indicator.FileChunkResultDTO;
|
||||
import com.electromagnetic.industry.software.data.manage.request.indicator.FileDownloadDTO;
|
||||
import com.electromagnetic.industry.software.data.manage.response.indicator.EDDataPageResponse;
|
||||
import com.electromagnetic.industry.software.data.manage.service.mappers.EDDataMappers;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import electromagnetic.data.framework.share.id.IdWorker;
|
||||
import electromagnetic.data.framework.share.model.ElectromagneticResult;
|
||||
import electromagnetic.data.framework.share.model.ElectromagneticResultUtil;
|
||||
import electromagnetic.data.framework.share.util.EleZipUtil;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
import org.springframework.core.io.FileSystemResource;
|
||||
import org.springframework.core.io.InputStreamResource;
|
||||
import org.springframework.http.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.*;
|
||||
|
|
@ -302,35 +303,38 @@ public class EDDataFacadeImpl implements EDDataFacade {
|
|||
* 下载
|
||||
* WISDOM_DOWNLOAD
|
||||
* /data/ed/file/download
|
||||
* @param request
|
||||
*
|
||||
* @param fileDownloadDTO
|
||||
* @return
|
||||
*/
|
||||
public ElectromagneticResult<Map<String, List<String>>> download(EDDataRequest request)
|
||||
public ResponseEntity<InputStreamResource> download(FileDownloadDTO fileDownloadDTO, HttpServletResponse response) throws IOException
|
||||
{
|
||||
//EDDataParams parames= EDDataMappers.INSTANCE.getEDDataParames(request);
|
||||
|
||||
// 获取文件存储的文件夹路径
|
||||
String osName = System.getProperty("os.name").toLowerCase();
|
||||
String storageFilePath = osName.startsWith("win") ? uploadFilePath + fileStoreDir : fileStoreDir;
|
||||
EDDataParams parames = new EDDataParams();
|
||||
List<String> dataPathArr = new ArrayList();
|
||||
for(String dataId : request.getDataIdArr())
|
||||
{
|
||||
String dataId = fileDownloadDTO.getDataIdArr();
|
||||
parames.setDataId(dataId);
|
||||
EDDataInfo edDataInfo = edDataService.getDataInfo(parames);
|
||||
if(edDataInfo != null)
|
||||
{
|
||||
Assert.isTrue(edDataInfo != null, "没有找到该下载文件");
|
||||
JSONObject implantJsonObject = JSON.parseObject(edDataInfo.getImplantJson());
|
||||
String filePath = implantJsonObject.getString("folderPath");
|
||||
filePath = storageFilePath + "/" + filePath + "/" + edDataInfo.getDataName();
|
||||
dataPathArr.add(filePath);
|
||||
}
|
||||
}
|
||||
String filePath = storageFilePath + "/" + implantJsonObject.getString("folderPath") + "/" + edDataInfo.getDataName();
|
||||
Assert.isTrue(FileUtil.exist(filePath), "下载文件不存在。");
|
||||
File file = new File(filePath);
|
||||
FileSystemResource fileSystemResource = new FileSystemResource(file);
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
|
||||
headers.add("Content-Disposition", String.format("attachment; filename=\"%s\"", fileSystemResource.getFilename()));
|
||||
headers.add("Pragma", "no-cache");
|
||||
headers.add("Expires", "0");
|
||||
|
||||
Map<String, List<String>> result = new HashMap<>();
|
||||
result.put("urlArr", dataPathArr);
|
||||
|
||||
return ElectromagneticResultUtil.success(result);
|
||||
// 构建响应实体(可以返回<byte[]或Resource,返回类型取决body入参类型)
|
||||
return ResponseEntity
|
||||
.ok()
|
||||
.headers(headers)
|
||||
.contentLength(fileSystemResource.contentLength())
|
||||
.contentType(MediaType.parseMediaType("application/octet-stream"))
|
||||
.body(new InputStreamResource(fileSystemResource.getInputStream()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue