package com.vci.web.controller; import com.vci.starter.web.pagemodel.BaseResult; import com.vci.starter.web.util.ControllerUtil; import com.vci.starter.web.util.LangBaseUtil; import com.vci.starter.web.util.VciBaseUtil; import com.vci.web.service.VciFileDownloadServiceI; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; /** * 文件下载控制器 * @author dangsn * @date 2020/08/11 */ @RestController() @RequestMapping("/vciFileDownloadController") public class VciFileDownloadController { /** * 文件下载服务 */ @Autowired private VciFileDownloadServiceI vciFileDownloadServiceI; /** * 根据文件主键下载文件 * @param fileOid 文件的主键,不超过get的限制长度 * @param downloadUUID 下载许可码 * @param response 响应的对象 * @return 执行结果,只有下载失败的时候才会这样 */ @GetMapping("/downloadByFileOid") public void downloadByFileOid(String fileOid, String downloadUUID, HttpServletResponse response){ String filePath = vciFileDownloadServiceI.downloadFileByOid(fileOid); try { ControllerUtil.writeFileToResponse(response,filePath); } catch (IOException e) { String msg = LangBaseUtil.getErrorMsg(e); try { ControllerUtil.writeDataToResponse(response,StringUtils.isNotBlank(msg)?msg.getBytes():new byte[0],null); } catch (IOException ioException) { ioException.printStackTrace(); } } } /** * 根据文件主键下载文件 * @param fileOid 文件的主键,不限制长度 * @param downloadUUID 下载许可码 * @param response 响应的对象 * @return 执行结果,只有下载失败的时候才会这样 */ @PostMapping("/downloadByFileOidPost") public void downloadByFileOidPost(String fileOid, String downloadUUID, HttpServletResponse response){ downloadByFileOid(fileOid,downloadUUID,response); } /** * 分片下载文件 * @param fileOid 文件主键 * @param offSet 偏移量 * @return 文件内容 */ @PostMapping("/sectionDownloadByFileOid") public BaseResult sectionDownloadByFileOid(String fileOid, long offSet){ BaseResult baseResult = vciFileDownloadServiceI.sectionDownloadByFileOid(fileOid, offSet); return baseResult; } /** * 文件删除 * @param fileOids 文件主键 * @return 文件内容 */ @DeleteMapping("/deleteFile") public BaseResult deleteFile(String fileOids){ List fileOidCollection = VciBaseUtil.str2List(fileOids); return vciFileDownloadServiceI.deleteFile(fileOidCollection); } }